mirror of
https://github.com/HDFGroup/hdf5.git
synced 2025-04-12 17:31:09 +08:00
[svn-r27745] Merge trunk revision 27744
This commit is contained in:
parent
1dc01a33b2
commit
10da31a926
@ -625,12 +625,12 @@ if (BUILD_TESTING)
|
||||
option (HDF_TEST_EXPRESS "Control testing framework (0-3)" "0")
|
||||
mark_as_advanced (HDF_TEST_EXPRESS)
|
||||
|
||||
include (${HDF5_SOURCE_DIR}/CTestConfig.cmake)
|
||||
configure_file (${HDF_RESOURCES_DIR}/CTestCustom.cmake ${HDF5_BINARY_DIR}/CTestCustom.ctest @ONLY)
|
||||
|
||||
enable_testing ()
|
||||
include (CTest)
|
||||
|
||||
include (${HDF5_SOURCE_DIR}/CTestConfig.cmake)
|
||||
configure_file (${HDF_RESOURCES_DIR}/CTestCustom.cmake ${HDF5_BINARY_DIR}/CTestCustom.ctest @ONLY)
|
||||
|
||||
if (NOT HDF5_EXTERNALLY_CONFIGURED)
|
||||
if (EXISTS "${HDF5_SOURCE_DIR}/test" AND IS_DIRECTORY "${HDF5_SOURCE_DIR}/test")
|
||||
add_subdirectory (${HDF5_SOURCE_DIR}/tools/lib ${PROJECT_BINARY_DIR}/tools/lib)
|
||||
@ -696,8 +696,18 @@ if (EXISTS "${HDF5_SOURCE_DIR}/fortran" AND IS_DIRECTORY "${HDF5_SOURCE_DIR}/for
|
||||
endif (NOT ALLOW_UNSUPPORTED)
|
||||
endif (BUILD_SHARED_LIBS AND APPLE)
|
||||
option (HDF5_ENABLE_F2003 "Enable FORTRAN 2003 Standard" ON)
|
||||
|
||||
include (${HDF_RESOURCES_EXT_DIR}/HDFUseFortran.cmake)
|
||||
|
||||
message (STATUS "Fortran compiler ID is ${CMAKE_Fortran_COMPILER_ID}")
|
||||
# Building with PGI requires CMake 3.3 or greater because previous versions
|
||||
# of CMake add the wrong compiler flag for the PGI Fortran compiler.
|
||||
if ("${CMAKE_Fortran_COMPILER_ID}" MATCHES "PGI" AND "${CMAKE_VERSION}" VERSION_LESS "3.3")
|
||||
message (FATAL_ERROR " **** PGI FORTRAN REQUIRES CMAKE VERSION 3.3 OR GREATER **** ")
|
||||
endif ()
|
||||
|
||||
include (${HDF_RESOURCES_DIR}/HDF5UseFortran.cmake)
|
||||
|
||||
if (HDF5_ENABLE_F2003)
|
||||
if (NOT FORTRAN_HAVE_ISO_C_BINDING)
|
||||
set (HDF5_ENABLE_F2003 OFF)
|
||||
|
3
MANIFEST
3
MANIFEST
@ -2233,7 +2233,6 @@
|
||||
./config/cmake/HDFCompilerFlags.cmake
|
||||
./config/cmake/HDF5Macros.cmake
|
||||
./config/cmake/HDF5UseFortran.cmake
|
||||
./config/cmake/HDF5_Examples.cmake.in
|
||||
./config/cmake/libhdf5.settings.cmake.in
|
||||
./config/cmake/mccacheinit.cmake
|
||||
./config/cmake/patch.xml
|
||||
@ -2267,6 +2266,7 @@
|
||||
./config/cmake/UserMacros/Windows_MT.cmake
|
||||
|
||||
# CMake-specific Examples Files
|
||||
./config/cmake/HDF5_Examples.cmake.in
|
||||
./config/cmake/HDF518_Examples.cmake.in
|
||||
./release_docs/USING_CMake_Examples.txt
|
||||
|
||||
@ -2346,4 +2346,3 @@
|
||||
# CMake-specific User Scripts
|
||||
./config/cmake/scripts/CTestScript.cmake _DO_NOT_DISTRIBUTE_
|
||||
./config/cmake/scripts/HDF518config.cmake _DO_NOT_DISTRIBUTE_
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
HDF5 version 1.9.230 currently under development
|
||||
HDF5 version 1.9.231 currently under development
|
||||
Please refer to the release_docs/INSTALL file for installation instructions.
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
|
@ -38,7 +38,7 @@ PROJECT_NAME = "HDF5 C++ API"
|
||||
# could be handy for archiving the generated documentation or if some version
|
||||
# control system is used.
|
||||
|
||||
PROJECT_NUMBER = "1.9.230 currently under development"
|
||||
PROJECT_NUMBER = "1.9.231 currently under development"
|
||||
|
||||
# Using the PROJECT_BRIEF tag one can provide an optional one line description
|
||||
# for a project that appears at the top of each page and should give viewer a
|
||||
|
@ -48,10 +48,6 @@ set (${HDF5_PACKAGE_NAME}_INCLUDE_DIR "@PACKAGE_INCLUDE_INSTALL_DIR@" "${${HDF5_
|
||||
set (${HDF5_PACKAGE_NAME}_SHARE_DIR "@PACKAGE_SHARE_INSTALL_DIR@")
|
||||
set_and_check (${HDF5_PACKAGE_NAME}_BUILD_DIR "@PACKAGE_CURRENT_BUILD_DIR@")
|
||||
|
||||
if (${HDF5_PACKAGE_NAME}_BUILD_FORTRAN)
|
||||
set (${HDF5_PACKAGE_NAME}_INCLUDE_DIR_FORTRAN "@PACKAGE_INCLUDE_INSTALL_DIR@")
|
||||
endif ()
|
||||
|
||||
if (${HDF5_PACKAGE_NAME}_BUILD_CPP_LIB)
|
||||
set (${HDF5_PACKAGE_NAME}_INCLUDE_DIR_CPP "@PACKAGE_INCLUDE_INSTALL_DIR@")
|
||||
endif ()
|
||||
@ -103,9 +99,17 @@ foreach (comp IN LISTS ${HDF5_PACKAGE_NAME}_FIND_COMPONENTS)
|
||||
if (${comp} STREQUAL "shared")
|
||||
list (REMOVE_ITEM ${HDF5_PACKAGE_NAME}_FIND_COMPONENTS ${comp})
|
||||
set (${HDF5_PACKAGE_NAME}_LIB_TYPE ${${HDF5_PACKAGE_NAME}_LIB_TYPE} ${comp})
|
||||
|
||||
if (${HDF5_PACKAGE_NAME}_BUILD_FORTRAN)
|
||||
set (${HDF5_PACKAGE_NAME}_INCLUDE_DIR_FORTRAN "@PACKAGE_INCLUDE_INSTALL_DIR@/shared")
|
||||
endif ()
|
||||
elseif (${comp} STREQUAL "static")
|
||||
list (REMOVE_ITEM ${HDF5_PACKAGE_NAME}_FIND_COMPONENTS ${comp})
|
||||
set (${HDF5_PACKAGE_NAME}_LIB_TYPE ${${HDF5_PACKAGE_NAME}_LIB_TYPE} ${comp})
|
||||
|
||||
if (${HDF5_PACKAGE_NAME}_BUILD_FORTRAN)
|
||||
set (${HDF5_PACKAGE_NAME}_INCLUDE_DIR_FORTRAN "@PACKAGE_INCLUDE_INSTALL_DIR@/static")
|
||||
endif ()
|
||||
endif ()
|
||||
endforeach ()
|
||||
foreach (libtype IN LISTS ${HDF5_PACKAGE_NAME}_LIB_TYPE)
|
||||
@ -128,12 +132,12 @@ foreach (libtype IN LISTS ${HDF5_PACKAGE_NAME}_LIB_TYPE)
|
||||
set (hdf5_comp2 "hdf5_hl_f90cstub")
|
||||
set (hdf5_comp "hdf5_hl_fortran")
|
||||
endif ()
|
||||
list (FIND ${HDF5_PACKAGE_NAME}_EXPORT_LIBRARIES "${hdf5_comp}-${libtype}" HAVE_COMP)
|
||||
if (${HAVE_COMP} LESS 0)
|
||||
list (FIND ${HDF5_PACKAGE_NAME}_EXPORT_LIBRARIES "${hdf5_comp}-${libtype}" HAVE_COMP)
|
||||
if (${HAVE_COMP} LESS 0)
|
||||
set (${HDF5_PACKAGE_NAME}_${libtype}_${comp}_FOUND 0)
|
||||
else ()
|
||||
if (hdf5_comp2)
|
||||
list (FIND ${HDF5_PACKAGE_NAME}_EXPORT_LIBRARIES "${hdf5_comp2}-${libtype}" HAVE_COMP2)
|
||||
list (FIND ${HDF5_PACKAGE_NAME}_EXPORT_LIBRARIES "${hdf5_comp2}-${libtype}" HAVE_COMP2)
|
||||
if (${HAVE_COMP2} LESS 0)
|
||||
set (${HDF5_PACKAGE_NAME}_${libtype}_${comp}_FOUND 0)
|
||||
else ()
|
||||
|
@ -20,7 +20,7 @@ endmacro (IDE_GENERATED_PROPERTIES)
|
||||
macro (IDE_SOURCE_PROPERTIES SOURCE_PATH HEADERS SOURCES)
|
||||
# install (FILES ${HEADERS}
|
||||
# DESTINATION include/R3D/${NAME}
|
||||
# COMPONENT Headers
|
||||
# COMPONENT Headers
|
||||
# )
|
||||
|
||||
string (REPLACE "/" "\\\\" source_group_path ${SOURCE_PATH} )
|
||||
@ -90,7 +90,7 @@ macro (HDF_SET_LIB_OPTIONS libtarget libname libtype)
|
||||
set (LIB_DEBUG_NAME "${libname}_debug")
|
||||
endif (WIN32)
|
||||
endif (${libtype} MATCHES "SHARED")
|
||||
|
||||
|
||||
set_target_properties (${libtarget}
|
||||
PROPERTIES
|
||||
OUTPUT_NAME_DEBUG ${LIB_DEBUG_NAME}
|
||||
@ -98,7 +98,7 @@ macro (HDF_SET_LIB_OPTIONS libtarget libname libtype)
|
||||
OUTPUT_NAME_MINSIZEREL ${LIB_RELEASE_NAME}
|
||||
OUTPUT_NAME_RELWITHDEBINFO ${LIB_RELEASE_NAME}
|
||||
)
|
||||
|
||||
|
||||
#----- Use MSVC Naming conventions for Shared Libraries
|
||||
if (MINGW AND ${libtype} MATCHES "SHARED")
|
||||
set_target_properties (${libtarget}
|
||||
@ -176,7 +176,7 @@ macro (TARGET_C_PROPERTIES wintarget libtype addcompileflags addlinkflags)
|
||||
PROPERTIES
|
||||
COMPILE_FLAGS "${addcompileflags}"
|
||||
LINK_FLAGS "${addlinkflags}"
|
||||
)
|
||||
)
|
||||
endif (MSVC)
|
||||
endmacro (TARGET_C_PROPERTIES)
|
||||
|
||||
@ -187,7 +187,7 @@ macro (TARGET_MSVC_PROPERTIES wintarget libtype addcompileflags addlinkflags)
|
||||
PROPERTIES
|
||||
COMPILE_FLAGS "${addcompileflags}"
|
||||
LINK_FLAGS "${addlinkflags}"
|
||||
)
|
||||
)
|
||||
endif (MSVC)
|
||||
endmacro (TARGET_MSVC_PROPERTIES)
|
||||
|
||||
@ -206,13 +206,13 @@ macro (TARGET_FORTRAN_WIN_PROPERTIES forttarget libtype addcompileflags addlinkf
|
||||
PROPERTIES
|
||||
COMPILE_FLAGS "/dll ${addcompileflags}"
|
||||
LINK_FLAGS "/SUBSYSTEM:CONSOLE ${addlinkflags}"
|
||||
)
|
||||
)
|
||||
else (${libtype} MATCHES "SHARED")
|
||||
set_target_properties (${forttarget}
|
||||
PROPERTIES
|
||||
COMPILE_FLAGS "${addcompileflags}"
|
||||
LINK_FLAGS "/SUBSYSTEM:CONSOLE ${addlinkflags}"
|
||||
)
|
||||
)
|
||||
endif (${libtype} MATCHES "SHARED")
|
||||
endif (MSVC)
|
||||
endmacro (TARGET_FORTRAN_WIN_PROPERTIES)
|
||||
@ -235,6 +235,8 @@ macro (HDF_README_PROPERTIES target_fortran)
|
||||
set (BINARY_PLATFORM "${BINARY_PLATFORM} 7")
|
||||
elseif (${CMAKE_SYSTEM_VERSION} MATCHES "6.2")
|
||||
set (BINARY_PLATFORM "${BINARY_PLATFORM} 8")
|
||||
elseif (${CMAKE_SYSTEM_VERSION} MATCHES "6.3")
|
||||
set (BINARY_PLATFORM "${BINARY_PLATFORM} 10")
|
||||
endif (${CMAKE_SYSTEM_VERSION} MATCHES "6.1")
|
||||
set (BINARY_PLATFORM "${BINARY_PLATFORM} ${MSVC_C_ARCHITECTURE_ID}")
|
||||
if (${CMAKE_C_COMPILER_VERSION} MATCHES "16.*")
|
||||
@ -245,6 +247,8 @@ macro (HDF_README_PROPERTIES target_fortran)
|
||||
set (BINARY_PLATFORM "${BINARY_PLATFORM}, using VISUAL STUDIO 2012")
|
||||
elseif (${CMAKE_C_COMPILER_VERSION} MATCHES "18.*")
|
||||
set (BINARY_PLATFORM "${BINARY_PLATFORM}, using VISUAL STUDIO 2013")
|
||||
elseif (${CMAKE_C_COMPILER_VERSION} MATCHES "19.*")
|
||||
set (BINARY_PLATFORM "${BINARY_PLATFORM}, using VISUAL STUDIO 2015")
|
||||
else (${CMAKE_C_COMPILER_VERSION} MATCHES "16.*")
|
||||
set (BINARY_PLATFORM "${BINARY_PLATFORM}, using VISUAL STUDIO ${CMAKE_C_COMPILER_VERSION}")
|
||||
endif (${CMAKE_C_COMPILER_VERSION} MATCHES "16.*")
|
||||
@ -269,9 +273,9 @@ macro (HDF_README_PROPERTIES target_fortran)
|
||||
else (BUILD_SHARED_LIBS)
|
||||
set (LIB_TYPE "Static")
|
||||
endif (BUILD_SHARED_LIBS)
|
||||
|
||||
|
||||
configure_file (
|
||||
${HDF_RESOURCES_DIR}/README.txt.cmake.in
|
||||
${HDF_RESOURCES_DIR}/README.txt.cmake.in
|
||||
${CMAKE_BINARY_DIR}/README.txt @ONLY
|
||||
)
|
||||
endmacro (HDF_README_PROPERTIES)
|
||||
|
@ -3,7 +3,7 @@
|
||||
#
|
||||
#-------------------------------------------------------------------------------
|
||||
ENABLE_LANGUAGE (Fortran)
|
||||
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
# Detect name mangling convention used between Fortran and C
|
||||
#-----------------------------------------------------------------------------
|
||||
@ -12,7 +12,6 @@ FortranCInterface_HEADER (
|
||||
${CMAKE_BINARY_DIR}/FCMangle.h
|
||||
MACRO_NAMESPACE "H5_FC_"
|
||||
SYMBOL_NAMESPACE "H5_FC_"
|
||||
SYMBOLS mysub mymod:my_sub
|
||||
)
|
||||
|
||||
file (STRINGS ${CMAKE_BINARY_DIR}/FCMangle.h CONTENTS REGEX "H5_FC_GLOBAL\\(.*,.*\\) +(.*)")
|
||||
@ -161,7 +160,7 @@ CHECK_FORTRAN_FEATURE(iso_c_binding
|
||||
IMPLICIT NONE
|
||||
TYPE(C_PTR) :: ptr
|
||||
TYPE(C_FUNPTR) :: funptr
|
||||
INTEGER(C_INT64_T) :: c_int64_type
|
||||
INTEGER(C_INT64_T) :: c_int64_type
|
||||
CHARACTER(LEN=80, KIND=c_char), TARGET :: ichr
|
||||
ptr = C_LOC(ichr(1:1))
|
||||
END PROGRAM
|
||||
|
@ -57,7 +57,7 @@ if test "XL" = "$cc_vendor"; then
|
||||
enable_shared="${enable_shared:-no}"
|
||||
# Make sure this is applied to other API compile options such as C++.
|
||||
AM_CFLAGS="$AM_CFLAGS"
|
||||
H5_CFLAGS="-qlanglvl=stdc99 $H5_CFLAGS"
|
||||
H5_CFLAGS="-qlanglvl=stdc99 -qflag=w:w $H5_CFLAGS"
|
||||
DEBUG_CFLAGS="-g -qfullpath"
|
||||
DEBUG_CPPFLAGS=
|
||||
# -O causes test/dtypes to fail badly. Turn it off for now.
|
||||
|
@ -19,7 +19,7 @@
|
||||
# After making changes, run bin/reconfigure to update other configure related
|
||||
# files like Makefile.in.
|
||||
LT_VERS_INTERFACE = 6
|
||||
LT_VERS_REVISION = 220
|
||||
LT_VERS_REVISION = 221
|
||||
LT_VERS_AGE = 0
|
||||
|
||||
## If the API changes *at all*, increment LT_VERS_INTERFACE and
|
||||
|
@ -26,7 +26,7 @@ AC_PREREQ([2.69])
|
||||
## NOTE: Do not forget to change the version number here when we do a
|
||||
## release!!!
|
||||
##
|
||||
AC_INIT([HDF5], [1.9.230], [help@hdfgroup.org])
|
||||
AC_INIT([HDF5], [1.9.231], [help@hdfgroup.org])
|
||||
|
||||
AC_CONFIG_SRCDIR([src/H5.c])
|
||||
AC_CONFIG_HEADERS([src/H5config.h])
|
||||
|
@ -66,19 +66,18 @@ set_target_properties (H5_buildiface PROPERTIES
|
||||
|
||||
if (BUILD_SHARED_LIBS AND NOT SKIP_HDF5_FORTRAN_SHARED)
|
||||
if (WIN32)
|
||||
set (MOD_BUILD_DIR ${CMAKE_Fortran_MODULE_DIRECTORY}/shared/\${BUILD_TYPE})
|
||||
set (MODSH_BUILD_DIR ${CMAKE_Fortran_MODULE_DIRECTORY}/shared/\${BUILD_TYPE})
|
||||
else (WIN32)
|
||||
set (MOD_BUILD_DIR ${CMAKE_Fortran_MODULE_DIRECTORY}/shared)
|
||||
endif (WIN32)
|
||||
else (BUILD_SHARED_LIBS AND NOT SKIP_HDF5_FORTRAN_SHARED)
|
||||
if (WIN32)
|
||||
set (MOD_BUILD_DIR ${CMAKE_Fortran_MODULE_DIRECTORY}/static/\${BUILD_TYPE})
|
||||
else (WIN32)
|
||||
set (MOD_BUILD_DIR ${CMAKE_Fortran_MODULE_DIRECTORY}/static)
|
||||
set (MODSH_BUILD_DIR ${CMAKE_Fortran_MODULE_DIRECTORY}/shared)
|
||||
endif (WIN32)
|
||||
endif (BUILD_SHARED_LIBS AND NOT SKIP_HDF5_FORTRAN_SHARED)
|
||||
if (WIN32)
|
||||
set (MOD_BUILD_DIR ${CMAKE_Fortran_MODULE_DIRECTORY}/static/\${BUILD_TYPE})
|
||||
else (WIN32)
|
||||
set (MOD_BUILD_DIR ${CMAKE_Fortran_MODULE_DIRECTORY}/static)
|
||||
endif (WIN32)
|
||||
|
||||
INCLUDE_DIRECTORIES (${HDF5_F90_BINARY_DIR} ${CMAKE_Fortran_MODULE_DIRECTORY} ${MOD_BUILD_DIR})
|
||||
INCLUDE_DIRECTORIES (${HDF5_F90_BINARY_DIR} ${CMAKE_Fortran_MODULE_DIRECTORY})
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
add_executable (H5match_types
|
||||
@ -292,11 +291,42 @@ install (
|
||||
FILES
|
||||
${mod_files}
|
||||
DESTINATION
|
||||
${HDF5_INSTALL_INCLUDE_DIR}
|
||||
${HDF5_INSTALL_INCLUDE_DIR}/static
|
||||
COMPONENT
|
||||
fortheaders
|
||||
)
|
||||
|
||||
if (BUILD_SHARED_LIBS AND NOT SKIP_HDF5_FORTRAN_SHARED)
|
||||
set (modsh_files
|
||||
${MODSH_BUILD_DIR}/h5fortran_types.mod
|
||||
${MODSH_BUILD_DIR}/hdf5.mod
|
||||
${MODSH_BUILD_DIR}/h5global.mod
|
||||
${MODSH_BUILD_DIR}/h5a.mod
|
||||
${MODSH_BUILD_DIR}/h5d.mod
|
||||
${MODSH_BUILD_DIR}/h5e.mod
|
||||
${MODSH_BUILD_DIR}/h5f.mod
|
||||
${MODSH_BUILD_DIR}/h5g.mod
|
||||
${MODSH_BUILD_DIR}/h5i.mod
|
||||
${MODSH_BUILD_DIR}/h5l.mod
|
||||
${MODSH_BUILD_DIR}/h5lib.mod
|
||||
${MODSH_BUILD_DIR}/h5o.mod
|
||||
${MODSH_BUILD_DIR}/h5p.mod
|
||||
${MODSH_BUILD_DIR}/h5r.mod
|
||||
${MODSH_BUILD_DIR}/h5s.mod
|
||||
${MODSH_BUILD_DIR}/h5t.mod
|
||||
${MODSH_BUILD_DIR}/h5z.mod
|
||||
${MODSH_BUILD_DIR}/h5_gen.mod
|
||||
)
|
||||
install (
|
||||
FILES
|
||||
${modsh_files}
|
||||
DESTINATION
|
||||
${HDF5_INSTALL_INCLUDE_DIR}/shared
|
||||
COMPONENT
|
||||
fortheaders
|
||||
)
|
||||
endif (BUILD_SHARED_LIBS AND NOT SKIP_HDF5_FORTRAN_SHARED)
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
# Add Target(s) to CMake Install for import into other projects
|
||||
#-----------------------------------------------------------------------------
|
||||
|
@ -6,6 +6,42 @@ PROJECT (HDF5_FORTRAN_TESTS C CXX Fortran)
|
||||
#-----------------------------------------------------------------------------
|
||||
INCLUDE_DIRECTORIES (${HDF5_F90_BINARY_DIR} ${HDF5_F90_SRC_DIR}/src)
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
# Setup the Fortran auto-detection utilities
|
||||
# H5_test_buildiface.F90 used to generate various KIND test interfaces
|
||||
#-----------------------------------------------------------------------------
|
||||
|
||||
add_executable (H5_test_buildiface
|
||||
${HDF5_F90_SRC_DIR}/test/H5_test_buildiface.F90
|
||||
)
|
||||
|
||||
if (WIN32 AND MSVC)
|
||||
if (BUILD_SHARED_LIBS)
|
||||
set_target_properties (H5_test_buildiface
|
||||
PROPERTIES
|
||||
COMPILE_FLAGS "/MT"
|
||||
)
|
||||
endif (BUILD_SHARED_LIBS)
|
||||
set_target_properties (H5_test_buildiface
|
||||
PROPERTIES
|
||||
LINK_FLAGS "/SUBSYSTEM:CONSOLE"
|
||||
)
|
||||
endif (WIN32 AND MSVC)
|
||||
set_target_properties (H5_test_buildiface PROPERTIES
|
||||
LINKER_LANGUAGE Fortran
|
||||
Fortran_MODULE_DIRECTORY ${CMAKE_Fortran_MODULE_DIRECTORY}
|
||||
)
|
||||
|
||||
if (NOT SKIP_HDF5_FORTRAN_SHARED)
|
||||
if (WIN32)
|
||||
set (MOD_BUILD_DIR ${CMAKE_Fortran_MODULE_DIRECTORY}/static/\${BUILD_TYPE})
|
||||
else (WIN32)
|
||||
set (MOD_BUILD_DIR ${CMAKE_Fortran_MODULE_DIRECTORY}/static)
|
||||
endif (WIN32)
|
||||
endif (NOT SKIP_HDF5_FORTRAN_SHARED)
|
||||
|
||||
INCLUDE_DIRECTORIES (${CMAKE_Fortran_MODULE_DIRECTORY} ${MOD_BUILD_DIR})
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
# Add Test Lib
|
||||
#-----------------------------------------------------------------------------
|
||||
@ -39,10 +75,27 @@ if (BUILD_SHARED_LIBS AND NOT SKIP_HDF5_FORTRAN_SHARED)
|
||||
)
|
||||
endif (BUILD_SHARED_LIBS AND NOT SKIP_HDF5_FORTRAN_SHARED)
|
||||
|
||||
set_source_files_properties (tf.F90 ${HDF5_F90_BINARY_DIR}/tf_gen.F90 PROPERTIES LANGUAGE Fortran)
|
||||
add_library (${HDF5_F90_TEST_LIB_TARGET} STATIC tf.F90 ${HDF5_F90_BINARY_DIR}/tf_gen.F90)
|
||||
set (HDF5_F90_TF_SRCS
|
||||
# generated files
|
||||
${HDF5_F90_BINARY_DIR}/tf_gen.F90
|
||||
)
|
||||
set_source_files_properties (
|
||||
${HDF5_F90_BINARY_DIR}/tf_gen.F90
|
||||
PROPERTIES GENERATED TRUE
|
||||
)
|
||||
set_source_files_properties (tf.F90 ${HDF5_F90_BINARY_DIR}/${HDF5_F90_TF_SRCS} PROPERTIES LANGUAGE Fortran)
|
||||
|
||||
set (CMD $<TARGET_FILE:H5_test_buildiface>)
|
||||
add_custom_target (H5testgen ALL
|
||||
COMMAND ${CMD}
|
||||
#v3.2 BYPRODUCT ${HDF5_F90_BINARY_DIR}/tf_gen.F90
|
||||
WORKING_DIRECTORY ${HDF5_F90_BINARY_DIR}
|
||||
DEPENDS H5_test_buildiface
|
||||
)
|
||||
|
||||
add_library (${HDF5_F90_TEST_LIB_TARGET} STATIC tf.F90 ${HDF5_F90_TF_SRCS})
|
||||
if (BUILD_SHARED_LIBS AND NOT SKIP_HDF5_FORTRAN_SHARED)
|
||||
add_library (${HDF5_F90_TEST_LIBSH_TARGET} SHARED tf.F90 ${HDF5_F90_BINARY_DIR}/tf_gen.F90)
|
||||
add_library (${HDF5_F90_TEST_LIBSH_TARGET} SHARED tf.F90 ${HDF5_F90_TF_SRCS})
|
||||
endif (BUILD_SHARED_LIBS AND NOT SKIP_HDF5_FORTRAN_SHARED)
|
||||
|
||||
TARGET_FORTRAN_PROPERTIES (${HDF5_F90_TEST_LIB_TARGET} STATIC " " " ")
|
||||
@ -92,40 +145,6 @@ if (BUILD_SHARED_LIBS AND NOT SKIP_HDF5_FORTRAN_SHARED)
|
||||
endif (WIN32)
|
||||
endif (BUILD_SHARED_LIBS AND NOT SKIP_HDF5_FORTRAN_SHARED)
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
# Setup the Fortran auto-detection utilities
|
||||
# H5_test_buildiface.F90 used to generate various KIND test interfaces
|
||||
#-----------------------------------------------------------------------------
|
||||
|
||||
add_executable (H5_test_buildiface
|
||||
${HDF5_F90_SRC_DIR}/test/H5_test_buildiface.F90
|
||||
)
|
||||
|
||||
if (WIN32 AND MSVC)
|
||||
if (BUILD_SHARED_LIBS)
|
||||
set_target_properties (H5_test_buildiface
|
||||
PROPERTIES
|
||||
COMPILE_FLAGS "/MT"
|
||||
)
|
||||
endif (BUILD_SHARED_LIBS)
|
||||
set_target_properties (H5_test_buildiface
|
||||
PROPERTIES
|
||||
LINK_FLAGS "/SUBSYSTEM:CONSOLE"
|
||||
)
|
||||
endif (WIN32 AND MSVC)
|
||||
set_target_properties (H5_test_buildiface PROPERTIES
|
||||
LINKER_LANGUAGE Fortran
|
||||
Fortran_MODULE_DIRECTORY ${CMAKE_Fortran_MODULE_DIRECTORY}
|
||||
)
|
||||
|
||||
set (CMD $<TARGET_FILE:H5_test_buildiface>)
|
||||
add_custom_command (
|
||||
OUTPUT ${HDF5_F90_BINARY_DIR}/tf_gen.F90
|
||||
COMMAND ${CMD}
|
||||
WORKING_DIRECTORY ${HDF5_F90_BINARY_DIR}
|
||||
DEPENDS H5_test_buildiface
|
||||
)
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
# Add Tests
|
||||
#-----------------------------------------------------------------------------
|
||||
@ -164,6 +183,8 @@ set_target_properties (testhdf5_fortran PROPERTIES
|
||||
FOLDER test/fortran
|
||||
Fortran_MODULE_DIRECTORY ${CMAKE_Fortran_MODULE_DIRECTORY}/static
|
||||
)
|
||||
add_dependencies (testhdf5_fortran ${HDF5_F90_TEST_LIB_TARGET})
|
||||
|
||||
if (BUILD_SHARED_LIBS AND NOT SKIP_HDF5_FORTRAN_SHARED)
|
||||
add_executable (testhdf5_fortran-shared
|
||||
fortranlib_test.F90
|
||||
@ -198,6 +219,7 @@ if (BUILD_SHARED_LIBS AND NOT SKIP_HDF5_FORTRAN_SHARED)
|
||||
FOLDER test/fortran
|
||||
Fortran_MODULE_DIRECTORY ${CMAKE_Fortran_MODULE_DIRECTORY}/shared
|
||||
)
|
||||
add_dependencies (testhdf5_fortran-shared ${HDF5_F90_TEST_LIBSH_TARGET})
|
||||
endif (BUILD_SHARED_LIBS AND NOT SKIP_HDF5_FORTRAN_SHARED)
|
||||
|
||||
#-- Adding test for testhdf5_fortran_1_8
|
||||
@ -225,6 +247,8 @@ set_target_properties (testhdf5_fortran_1_8 PROPERTIES
|
||||
FOLDER test/fortran
|
||||
Fortran_MODULE_DIRECTORY ${CMAKE_Fortran_MODULE_DIRECTORY}/static
|
||||
)
|
||||
add_dependencies (testhdf5_fortran_1_8 ${HDF5_F90_TEST_LIB_TARGET})
|
||||
|
||||
if (BUILD_SHARED_LIBS AND NOT SKIP_HDF5_FORTRAN_SHARED)
|
||||
add_executable (testhdf5_fortran_1_8-shared
|
||||
fortranlib_test_1_8.F90
|
||||
@ -250,6 +274,7 @@ if (BUILD_SHARED_LIBS AND NOT SKIP_HDF5_FORTRAN_SHARED)
|
||||
FOLDER test/fortran
|
||||
Fortran_MODULE_DIRECTORY ${CMAKE_Fortran_MODULE_DIRECTORY}/shared
|
||||
)
|
||||
add_dependencies (testhdf5_fortran_1_8-shared ${HDF5_F90_TEST_LIBSH_TARGET})
|
||||
endif (BUILD_SHARED_LIBS AND NOT SKIP_HDF5_FORTRAN_SHARED)
|
||||
|
||||
#-- Adding test for fortranlib_test_F03
|
||||
@ -279,6 +304,8 @@ set_target_properties (fortranlib_test_F03 PROPERTIES
|
||||
FOLDER test/fortran
|
||||
Fortran_MODULE_DIRECTORY ${CMAKE_Fortran_MODULE_DIRECTORY}/static
|
||||
)
|
||||
add_dependencies (fortranlib_test_F03 ${HDF5_F90_TEST_LIB_TARGET})
|
||||
|
||||
if (BUILD_SHARED_LIBS AND NOT SKIP_HDF5_FORTRAN_SHARED)
|
||||
add_executable (fortranlib_test_F03-shared
|
||||
fortranlib_test_F03.F90
|
||||
@ -305,7 +332,8 @@ if (BUILD_SHARED_LIBS AND NOT SKIP_HDF5_FORTRAN_SHARED)
|
||||
LINKER_LANGUAGE Fortran
|
||||
FOLDER test/fortran
|
||||
Fortran_MODULE_DIRECTORY ${CMAKE_Fortran_MODULE_DIRECTORY}/shared
|
||||
)
|
||||
)
|
||||
add_dependencies (fortranlib_test_F03-shared ${HDF5_F90_TEST_LIBSH_TARGET})
|
||||
endif (BUILD_SHARED_LIBS AND NOT SKIP_HDF5_FORTRAN_SHARED)
|
||||
|
||||
#-- Adding test for fflush1
|
||||
@ -326,6 +354,8 @@ set_target_properties (fflush1 PROPERTIES
|
||||
FOLDER test/fortran
|
||||
Fortran_MODULE_DIRECTORY ${CMAKE_Fortran_MODULE_DIRECTORY}/static
|
||||
)
|
||||
add_dependencies (fflush1 ${HDF5_F90_TEST_LIB_TARGET})
|
||||
|
||||
if (BUILD_SHARED_LIBS AND NOT SKIP_HDF5_FORTRAN_SHARED)
|
||||
add_executable (fflush1-shared fflush1.F90)
|
||||
TARGET_NAMING (fflush1-shared SHARED)
|
||||
@ -344,6 +374,7 @@ if (BUILD_SHARED_LIBS AND NOT SKIP_HDF5_FORTRAN_SHARED)
|
||||
FOLDER test/fortran
|
||||
Fortran_MODULE_DIRECTORY ${CMAKE_Fortran_MODULE_DIRECTORY}/shared
|
||||
)
|
||||
add_dependencies (fflush1-shared ${HDF5_F90_TEST_LIBSH_TARGET})
|
||||
endif (BUILD_SHARED_LIBS AND NOT SKIP_HDF5_FORTRAN_SHARED)
|
||||
|
||||
#-- Adding test for fflush2
|
||||
@ -364,6 +395,8 @@ set_target_properties (fflush2 PROPERTIES
|
||||
FOLDER test/fortran
|
||||
Fortran_MODULE_DIRECTORY ${CMAKE_Fortran_MODULE_DIRECTORY}/static
|
||||
)
|
||||
add_dependencies (fflush2 ${HDF5_F90_TEST_LIB_TARGET})
|
||||
|
||||
if (BUILD_SHARED_LIBS AND NOT SKIP_HDF5_FORTRAN_SHARED)
|
||||
add_executable (fflush2-shared fflush2.F90)
|
||||
TARGET_NAMING (fflush2-shared SHARED)
|
||||
@ -382,6 +415,7 @@ if (BUILD_SHARED_LIBS AND NOT SKIP_HDF5_FORTRAN_SHARED)
|
||||
FOLDER test/fortran
|
||||
Fortran_MODULE_DIRECTORY ${CMAKE_Fortran_MODULE_DIRECTORY}/shared
|
||||
)
|
||||
add_dependencies (fflush2-shared ${HDF5_F90_TEST_LIBSH_TARGET})
|
||||
endif (BUILD_SHARED_LIBS AND NOT SKIP_HDF5_FORTRAN_SHARED)
|
||||
|
||||
include (CMakeTests.cmake)
|
||||
|
@ -43,11 +43,6 @@ check_PROGRAMS=$(TEST_PROG)
|
||||
|
||||
libh5test_fortran_la_SOURCES = tf_gen.F90 tf.F90 t.c
|
||||
|
||||
# Source files are used for both the library and fortranlib_test.
|
||||
# Automake will complain about this without the following workaround.
|
||||
#fortranlib_test_FCFLAGS=$(AM_FCFLAGS)
|
||||
#fortranlib_test_CFLAGS=$(AM_CFLAGS)
|
||||
|
||||
fortranlib_test_SOURCES = tH5F.F90 tH5D.F90 tH5R.F90 tH5S.F90 tH5T.F90 tH5VL.F90 tH5Z.F90 \
|
||||
tH5Sselect.F90 tH5P.F90 tH5A.F90 tH5I.F90 tH5G.F90 tH5E.F90 tHDF5.F90 fortranlib_test.F90
|
||||
|
||||
|
@ -24,6 +24,8 @@
|
||||
!
|
||||
!*****
|
||||
|
||||
!#include <H5config_f.inc>
|
||||
|
||||
PROGRAM fortranlibtest
|
||||
|
||||
USE HDF5
|
||||
|
@ -21,8 +21,8 @@
|
||||
SUBROUTINE hyper(length,do_collective,do_chunk, mpi_size, mpi_rank, nerrors)
|
||||
USE HDF5
|
||||
USE TH5_MISC
|
||||
USE mpi
|
||||
IMPLICIT NONE
|
||||
INCLUDE 'mpif.h'
|
||||
|
||||
INTEGER, INTENT(in) :: length ! array length
|
||||
LOGICAL, INTENT(in) :: do_collective ! use collective I/O
|
||||
|
@ -21,8 +21,8 @@
|
||||
SUBROUTINE multiple_dset_write(length, do_collective, do_chunk, mpi_size, mpi_rank, nerrors)
|
||||
USE HDF5
|
||||
USE TH5_MISC
|
||||
USE mpi
|
||||
IMPLICIT NONE
|
||||
INCLUDE 'mpif.h'
|
||||
|
||||
INTEGER, INTENT(in) :: length ! array length
|
||||
LOGICAL, INTENT(in) :: do_collective ! use collective I/O
|
||||
|
@ -19,8 +19,9 @@
|
||||
|
||||
PROGRAM parallel_test
|
||||
USE hdf5
|
||||
USE mpi
|
||||
|
||||
IMPLICIT NONE
|
||||
INCLUDE 'mpif.h'
|
||||
|
||||
INTEGER :: mpierror ! MPI hdferror flag
|
||||
INTEGER :: hdferror ! HDF hdferror flag
|
||||
|
@ -38,17 +38,16 @@ set_target_properties (H5HL_buildiface PROPERTIES
|
||||
|
||||
if (BUILD_SHARED_LIBS AND NOT SKIP_HDF5_FORTRAN_SHARED)
|
||||
if (WIN32)
|
||||
set (MOD_BUILD_DIR ${CMAKE_Fortran_MODULE_DIRECTORY}/shared/\${BUILD_TYPE})
|
||||
set (MODSH_BUILD_DIR ${CMAKE_Fortran_MODULE_DIRECTORY}/shared/\${BUILD_TYPE})
|
||||
else (WIN32)
|
||||
set (MOD_BUILD_DIR ${CMAKE_Fortran_MODULE_DIRECTORY}/shared)
|
||||
endif (WIN32)
|
||||
else (BUILD_SHARED_LIBS AND NOT SKIP_HDF5_FORTRAN_SHARED)
|
||||
if (WIN32)
|
||||
set (MOD_BUILD_DIR ${CMAKE_Fortran_MODULE_DIRECTORY}/static/\${BUILD_TYPE})
|
||||
else (WIN32)
|
||||
set (MOD_BUILD_DIR ${CMAKE_Fortran_MODULE_DIRECTORY}/static)
|
||||
set (MODSH_BUILD_DIR ${CMAKE_Fortran_MODULE_DIRECTORY}/shared)
|
||||
endif (WIN32)
|
||||
endif (BUILD_SHARED_LIBS AND NOT SKIP_HDF5_FORTRAN_SHARED)
|
||||
if (WIN32)
|
||||
set (MOD_BUILD_DIR ${CMAKE_Fortran_MODULE_DIRECTORY}/static/\${BUILD_TYPE})
|
||||
else (WIN32)
|
||||
set (MOD_BUILD_DIR ${CMAKE_Fortran_MODULE_DIRECTORY}/static)
|
||||
endif (WIN32)
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
# Setup include Directories
|
||||
@ -198,11 +197,30 @@ install (
|
||||
FILES
|
||||
${mod_files}
|
||||
DESTINATION
|
||||
${HDF5_INSTALL_INCLUDE_DIR}
|
||||
${HDF5_INSTALL_INCLUDE_DIR}/static
|
||||
COMPONENT
|
||||
fortheaders
|
||||
)
|
||||
|
||||
if (BUILD_SHARED_LIBS AND NOT SKIP_HDF5_FORTRAN_SHARED)
|
||||
set (modsh_files
|
||||
${MODSH_BUILD_DIR}/h5ds.mod
|
||||
${MODSH_BUILD_DIR}/h5tb.mod
|
||||
${MODSH_BUILD_DIR}/h5tb_const.mod
|
||||
${MODSH_BUILD_DIR}/h5lt.mod
|
||||
${MODSH_BUILD_DIR}/h5lt_const.mod
|
||||
${MODSH_BUILD_DIR}/h5im.mod
|
||||
)
|
||||
install (
|
||||
FILES
|
||||
${modsh_files}
|
||||
DESTINATION
|
||||
${HDF5_INSTALL_INCLUDE_DIR}/shared
|
||||
COMPONENT
|
||||
fortheaders
|
||||
)
|
||||
endif (BUILD_SHARED_LIBS AND NOT SKIP_HDF5_FORTRAN_SHARED)
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
# Add Target(s) to CMake Install for import into other projects
|
||||
#-----------------------------------------------------------------------------
|
||||
|
@ -299,7 +299,7 @@ dnl Try link a simple MPI program.
|
||||
AC_MSG_CHECKING([whether a simple MPI-IO Fortran program can be linked])
|
||||
AC_LINK_IFELSE([
|
||||
PROGRAM main
|
||||
USE mpi
|
||||
INCLUDE 'mpif.h'
|
||||
INTEGER :: comm, amode, info, fh, ierror
|
||||
CHARACTER(LEN=1) :: filename
|
||||
CALL MPI_File_open( comm, filename, amode, info, fh, ierror)
|
||||
|
@ -1,4 +1,4 @@
|
||||
HDF5 version 1.9.230 currently under development
|
||||
HDF5 version 1.9.231 currently under development
|
||||
================================================================================
|
||||
|
||||
|
||||
|
@ -451,6 +451,7 @@ set_tests_properties (H5TEST-flush2 PROPERTIES DEPENDS H5TEST-flush1)
|
||||
set_tests_properties (H5TEST-fheap PROPERTIES TIMEOUT 1800)
|
||||
set_tests_properties (H5TEST-testmeta PROPERTIES TIMEOUT 1800)
|
||||
set_tests_properties (H5TEST-big PROPERTIES TIMEOUT 1800)
|
||||
set_tests_properties (H5TEST-objcopy PROPERTIES TIMEOUT 2400)
|
||||
|
||||
if (BUILD_SHARED_LIBS)
|
||||
# Remove any output file left over from previous test run
|
||||
@ -541,6 +542,7 @@ if (BUILD_SHARED_LIBS)
|
||||
set_tests_properties (H5TEST-shared-fheap PROPERTIES TIMEOUT 1800)
|
||||
set_tests_properties (H5TEST-shared-testmeta PROPERTIES TIMEOUT 1800)
|
||||
set_tests_properties (H5TEST-shared-big PROPERTIES TIMEOUT 1800)
|
||||
set_tests_properties (H5TEST-shared-objcopy PROPERTIES TIMEOUT 2400)
|
||||
endif (BUILD_SHARED_LIBS)
|
||||
|
||||
##############################################################################
|
||||
|
@ -47,473 +47,473 @@
|
||||
|
||||
|
||||
obj_list_t* parse_filter(const char *str,
|
||||
int *n_objs,
|
||||
filter_info_t *filt,
|
||||
pack_opt_t *options,
|
||||
int *is_glb)
|
||||
int *n_objs,
|
||||
filter_info_t *filt,
|
||||
pack_opt_t *options,
|
||||
int *is_glb)
|
||||
{
|
||||
unsigned i, u;
|
||||
char c;
|
||||
size_t len=HDstrlen(str);
|
||||
int j, m, n, k, l, p, r, q, end_obj=-1, no_param=0;
|
||||
char sobj[MAX_NC_NAME];
|
||||
char scomp[10];
|
||||
char stype[5];
|
||||
char smask[3];
|
||||
obj_list_t* obj_list=NULL;
|
||||
unsigned pixels_per_block;
|
||||
unsigned i, u;
|
||||
char c;
|
||||
size_t len=HDstrlen(str);
|
||||
int j, m, n, k, l, p, r, q, end_obj=-1, no_param=0;
|
||||
char sobj[MAX_NC_NAME];
|
||||
char scomp[10];
|
||||
char stype[6];
|
||||
char smask[3];
|
||||
obj_list_t* obj_list=NULL;
|
||||
unsigned pixels_per_block;
|
||||
|
||||
|
||||
/* initialize compression info */
|
||||
HDmemset(filt,0,sizeof(filter_info_t));
|
||||
*is_glb = 0;
|
||||
/* initialize compression info */
|
||||
HDmemset(filt,0,sizeof(filter_info_t));
|
||||
*is_glb = 0;
|
||||
|
||||
/* check for the end of object list and number of objects */
|
||||
for ( i = 0, n = 0; i < len; i++)
|
||||
{
|
||||
c = str[i];
|
||||
if ( c==':' )
|
||||
{
|
||||
end_obj=i;
|
||||
}
|
||||
if ( c==',' )
|
||||
{
|
||||
n++;
|
||||
}
|
||||
}
|
||||
/* check for the end of object list and number of objects */
|
||||
for ( i = 0, n = 0; i < len; i++)
|
||||
{
|
||||
c = str[i];
|
||||
if ( c==':' )
|
||||
{
|
||||
end_obj=i;
|
||||
}
|
||||
if ( c==',' )
|
||||
{
|
||||
n++;
|
||||
}
|
||||
}
|
||||
|
||||
if (end_obj==-1) /* missing : */
|
||||
{
|
||||
/* apply to all objects */
|
||||
options->all_filter=1;
|
||||
*is_glb = 1;
|
||||
}
|
||||
if (end_obj==-1) /* missing : */
|
||||
{
|
||||
/* apply to all objects */
|
||||
options->all_filter=1;
|
||||
*is_glb = 1;
|
||||
}
|
||||
|
||||
n++;
|
||||
obj_list = (obj_list_t*) HDmalloc(n*sizeof(obj_list_t));
|
||||
if (obj_list==NULL)
|
||||
{
|
||||
error_msg("could not allocate object list\n");
|
||||
return NULL;
|
||||
}
|
||||
*n_objs=n;
|
||||
n++;
|
||||
obj_list = (obj_list_t*) HDmalloc(n*sizeof(obj_list_t));
|
||||
if (obj_list==NULL)
|
||||
{
|
||||
error_msg("could not allocate object list\n");
|
||||
return NULL;
|
||||
}
|
||||
*n_objs=n;
|
||||
|
||||
/* get object list */
|
||||
for ( j = 0, k = 0, n = 0; j < end_obj; j++, k++)
|
||||
{
|
||||
c = str[j];
|
||||
sobj[k] = c;
|
||||
if ( c==',' || j==end_obj-1)
|
||||
{
|
||||
if ( c==',') sobj[k]='\0'; else sobj[k+1]='\0';
|
||||
HDstrcpy(obj_list[n].obj,sobj);
|
||||
HDmemset(sobj,0,sizeof(sobj));
|
||||
n++;
|
||||
k=-1;
|
||||
}
|
||||
}
|
||||
/* nothing after : */
|
||||
if (end_obj+1==(int)len)
|
||||
{
|
||||
if (obj_list) HDfree(obj_list);
|
||||
error_msg("input Error: Invalid compression type in <%s>\n",str);
|
||||
HDexit(EXIT_FAILURE);
|
||||
}
|
||||
/* get object list */
|
||||
for ( j = 0, k = 0, n = 0; j < end_obj; j++, k++)
|
||||
{
|
||||
c = str[j];
|
||||
sobj[k] = c;
|
||||
if ( c==',' || j==end_obj-1)
|
||||
{
|
||||
if ( c==',') sobj[k]='\0'; else sobj[k+1]='\0';
|
||||
HDstrcpy(obj_list[n].obj,sobj);
|
||||
HDmemset(sobj,0,sizeof(sobj));
|
||||
n++;
|
||||
k=-1;
|
||||
}
|
||||
}
|
||||
/* nothing after : */
|
||||
if (end_obj+1==(int)len)
|
||||
{
|
||||
if (obj_list) HDfree(obj_list);
|
||||
error_msg("input Error: Invalid compression type in <%s>\n",str);
|
||||
HDexit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
|
||||
/* get filter additional parameters */
|
||||
m=0;
|
||||
for ( i=end_obj+1, k=0, j=0; i<len; i++,k++)
|
||||
{
|
||||
c = str[i];
|
||||
scomp[k]=c;
|
||||
if ( c=='=' || i==len-1)
|
||||
{
|
||||
if ( c=='=') /*one more parameter */
|
||||
{
|
||||
scomp[k]='\0'; /*cut space */
|
||||
/* get filter additional parameters */
|
||||
m=0;
|
||||
for ( i=end_obj+1, k=0, j=0; i<len; i++,k++)
|
||||
{
|
||||
c = str[i];
|
||||
scomp[k]=c;
|
||||
if ( c=='=' || i==len-1)
|
||||
{
|
||||
if ( c=='=') /*one more parameter */
|
||||
{
|
||||
scomp[k]='\0'; /*cut space */
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* H5Z_FILTER_SZIP
|
||||
* szip has the format SZIP=<pixels per block,coding>
|
||||
* pixels per block is a even number in 2-32 and coding method is 'EC' or 'NN'
|
||||
* example SZIP=8,NN
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
if (HDstrcmp(scomp,"SZIP")==0)
|
||||
{
|
||||
l=-1; /* mask index check */
|
||||
for ( m=0,u=i+1; u<len; u++,m++)
|
||||
{
|
||||
if (str[u]==',')
|
||||
{
|
||||
stype[m]='\0'; /* end digit of szip */
|
||||
l=0; /* start EC or NN search */
|
||||
u++; /* skip ',' */
|
||||
}
|
||||
c = str[u];
|
||||
if (!isdigit(c) && l==-1)
|
||||
{
|
||||
if (obj_list) HDfree(obj_list);
|
||||
error_msg("compression parameter not digit in <%s>\n",str);
|
||||
HDexit(EXIT_FAILURE);
|
||||
}
|
||||
if (l==-1)
|
||||
stype[m]=c;
|
||||
else
|
||||
{
|
||||
smask[l]=c;
|
||||
l++;
|
||||
if (l==2)
|
||||
{
|
||||
smask[l]='\0';
|
||||
i=len-1; /* end */
|
||||
(*n_objs)--; /* we counted an extra ',' */
|
||||
if (HDstrcmp(smask,"NN")==0)
|
||||
filt->cd_values[j++]=H5_SZIP_NN_OPTION_MASK;
|
||||
else if (HDstrcmp(smask,"EC")==0)
|
||||
filt->cd_values[j++]=H5_SZIP_EC_OPTION_MASK;
|
||||
else
|
||||
{
|
||||
error_msg("szip mask must be 'NN' or 'EC' \n");
|
||||
HDexit(EXIT_FAILURE);
|
||||
}
|
||||
/*-------------------------------------------------------------------------
|
||||
* H5Z_FILTER_SZIP
|
||||
* szip has the format SZIP=<pixels per block,coding>
|
||||
* pixels per block is a even number in 2-32 and coding method is 'EC' or 'NN'
|
||||
* example SZIP=8,NN
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
if (HDstrcmp(scomp,"SZIP")==0)
|
||||
{
|
||||
l=-1; /* mask index check */
|
||||
for ( m=0,u=i+1; u<len; u++,m++)
|
||||
{
|
||||
if (str[u]==',')
|
||||
{
|
||||
stype[m]='\0'; /* end digit of szip */
|
||||
l=0; /* start EC or NN search */
|
||||
u++; /* skip ',' */
|
||||
}
|
||||
c = str[u];
|
||||
if (!isdigit(c) && l==-1)
|
||||
{
|
||||
if (obj_list) HDfree(obj_list);
|
||||
error_msg("compression parameter not digit in <%s>\n",str);
|
||||
HDexit(EXIT_FAILURE);
|
||||
}
|
||||
if (l==-1)
|
||||
stype[m]=c;
|
||||
else
|
||||
{
|
||||
smask[l]=c;
|
||||
l++;
|
||||
if (l==2)
|
||||
{
|
||||
smask[l]='\0';
|
||||
i=len-1; /* end */
|
||||
(*n_objs)--; /* we counted an extra ',' */
|
||||
if (HDstrcmp(smask,"NN")==0)
|
||||
filt->cd_values[j++]=H5_SZIP_NN_OPTION_MASK;
|
||||
else if (HDstrcmp(smask,"EC")==0)
|
||||
filt->cd_values[j++]=H5_SZIP_EC_OPTION_MASK;
|
||||
else
|
||||
{
|
||||
error_msg("szip mask must be 'NN' or 'EC' \n");
|
||||
HDexit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
} /* u */
|
||||
} /*if */
|
||||
} /* u */
|
||||
} /*if */
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* H5Z_FILTER_SCALEOFFSET
|
||||
* scaleoffset has the format SOFF=<scale_factor,scale_type>
|
||||
* scale_type can be
|
||||
* integer datatype, H5Z_SO_INT (IN)
|
||||
* float datatype using D-scaling method, H5Z_SO_FLOAT_DSCALE (DS)
|
||||
* float datatype using E-scaling method, H5Z_SO_FLOAT_ESCALE (ES) , not yet implemented
|
||||
* for integer datatypes, scale_factor denotes Minimum Bits
|
||||
* for float datatypes, scale_factor denotes decimal scale factor
|
||||
* examples
|
||||
* SOFF=31,IN
|
||||
* SOFF=3,DF
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
/*-------------------------------------------------------------------------
|
||||
* H5Z_FILTER_SCALEOFFSET
|
||||
* scaleoffset has the format SOFF=<scale_factor,scale_type>
|
||||
* scale_type can be
|
||||
* integer datatype, H5Z_SO_INT (IN)
|
||||
* float datatype using D-scaling method, H5Z_SO_FLOAT_DSCALE (DS)
|
||||
* float datatype using E-scaling method, H5Z_SO_FLOAT_ESCALE (ES) , not yet implemented
|
||||
* for integer datatypes, scale_factor denotes Minimum Bits
|
||||
* for float datatypes, scale_factor denotes decimal scale factor
|
||||
* examples
|
||||
* SOFF=31,IN
|
||||
* SOFF=3,DF
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
else if (HDstrcmp(scomp,"SOFF")==0)
|
||||
{
|
||||
l=-1; /* mask index check */
|
||||
for ( m=0,u=i+1; u<len; u++,m++)
|
||||
{
|
||||
if (str[u]==',')
|
||||
{
|
||||
stype[m]='\0'; /* end digit */
|
||||
l=0; /* start 'IN' , 'DS', or 'ES' search */
|
||||
u++; /* skip ',' */
|
||||
}
|
||||
c = str[u];
|
||||
if (!isdigit(c) && l==-1)
|
||||
{
|
||||
if (obj_list) HDfree(obj_list);
|
||||
error_msg("compression parameter is not a digit in <%s>\n",str);
|
||||
HDexit(EXIT_FAILURE);
|
||||
}
|
||||
if (l==-1)
|
||||
stype[m]=c;
|
||||
else
|
||||
{
|
||||
smask[l]=c;
|
||||
l++;
|
||||
if (l==2)
|
||||
{
|
||||
smask[l]='\0';
|
||||
i=len-1; /* end */
|
||||
(*n_objs)--; /* we counted an extra ',' */
|
||||
if (HDstrcmp(smask,"IN")==0)
|
||||
filt->cd_values[j++]=H5Z_SO_INT;
|
||||
else if (HDstrcmp(smask,"DS")==H5Z_SO_FLOAT_DSCALE)
|
||||
filt->cd_values[j++]=H5Z_SO_FLOAT_DSCALE;
|
||||
else
|
||||
{
|
||||
error_msg("scale type must be 'IN' or 'DS' \n");
|
||||
HDexit(EXIT_FAILURE);
|
||||
}
|
||||
else if (HDstrcmp(scomp,"SOFF")==0)
|
||||
{
|
||||
l=-1; /* mask index check */
|
||||
for ( m=0,u=i+1; u<len; u++,m++)
|
||||
{
|
||||
if (str[u]==',')
|
||||
{
|
||||
stype[m]='\0'; /* end digit */
|
||||
l=0; /* start 'IN' , 'DS', or 'ES' search */
|
||||
u++; /* skip ',' */
|
||||
}
|
||||
c = str[u];
|
||||
if (!isdigit(c) && l==-1)
|
||||
{
|
||||
if (obj_list) HDfree(obj_list);
|
||||
error_msg("compression parameter is not a digit in <%s>\n",str);
|
||||
HDexit(EXIT_FAILURE);
|
||||
}
|
||||
if (l==-1)
|
||||
stype[m]=c;
|
||||
else
|
||||
{
|
||||
smask[l]=c;
|
||||
l++;
|
||||
if (l==2)
|
||||
{
|
||||
smask[l]='\0';
|
||||
i=len-1; /* end */
|
||||
(*n_objs)--; /* we counted an extra ',' */
|
||||
if (HDstrcmp(smask,"IN")==0)
|
||||
filt->cd_values[j++]=H5Z_SO_INT;
|
||||
else if (HDstrcmp(smask,"DS")==H5Z_SO_FLOAT_DSCALE)
|
||||
filt->cd_values[j++]=H5Z_SO_FLOAT_DSCALE;
|
||||
else
|
||||
{
|
||||
error_msg("scale type must be 'IN' or 'DS' \n");
|
||||
HDexit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
} /* u */
|
||||
} /*if */
|
||||
/*-------------------------------------------------------------------------
|
||||
* User Defined
|
||||
* has the format UD=<filter_number,cd_value_count,value_1[,value_2,...,value_N]>
|
||||
* BZIP2 example
|
||||
* UD=307,1,9
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
} /* u */
|
||||
} /*if */
|
||||
/*-------------------------------------------------------------------------
|
||||
* User Defined
|
||||
* has the format UD=<filter_number,cd_value_count,value_1[,value_2,...,value_N]>
|
||||
* BZIP2 example
|
||||
* UD=307,1,9
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
else if (HDstrcmp(scomp,"UD")==0)
|
||||
{
|
||||
l=-1; /* filter number index check */
|
||||
p=-1; /* CD_VAL count check */
|
||||
r=-1; /* CD_VAL check */
|
||||
for ( m=0,q=0,u=i+1; u<len; u++,m++,q++)
|
||||
{
|
||||
if (str[u]==',')
|
||||
{
|
||||
stype[q]='\0'; /* end digit */
|
||||
if (l==-1)
|
||||
{
|
||||
filt->filtn=atoi(stype);
|
||||
l=0;
|
||||
}
|
||||
else if (p==-1)
|
||||
{
|
||||
filt->cd_nelmts=atoi(stype);
|
||||
p=0;
|
||||
}
|
||||
else
|
||||
r=0;
|
||||
q=0;
|
||||
u++; /* skip ',' */
|
||||
}
|
||||
c = str[u];
|
||||
if (!isdigit(c) && l==-1)
|
||||
{
|
||||
if (obj_list) HDfree(obj_list);
|
||||
error_msg("filter number parameter is not a digit in <%s>\n",str);
|
||||
HDexit(EXIT_FAILURE);
|
||||
}
|
||||
stype[q]=c;
|
||||
if (l==0 && p==0)
|
||||
{
|
||||
if (r==0)
|
||||
filt->cd_values[j++]=atoi(stype);
|
||||
}
|
||||
else if (HDstrcmp(scomp,"UD")==0)
|
||||
{
|
||||
l=-1; /* filter number index check */
|
||||
p=-1; /* CD_VAL count check */
|
||||
r=-1; /* CD_VAL check */
|
||||
for ( m=0,q=0,u=i+1; u<len; u++,m++,q++)
|
||||
{
|
||||
if (str[u]==',')
|
||||
{
|
||||
stype[q]='\0'; /* end digit */
|
||||
if (l==-1)
|
||||
{
|
||||
filt->filtn=atoi(stype);
|
||||
l=0;
|
||||
}
|
||||
else if (p==-1)
|
||||
{
|
||||
filt->cd_nelmts=atoi(stype);
|
||||
p=0;
|
||||
}
|
||||
else
|
||||
r=0;
|
||||
q=0;
|
||||
u++; /* skip ',' */
|
||||
}
|
||||
c = str[u];
|
||||
if (!isdigit(c) && l==-1)
|
||||
{
|
||||
if (obj_list) HDfree(obj_list);
|
||||
error_msg("filter number parameter is not a digit in <%s>\n",str);
|
||||
HDexit(EXIT_FAILURE);
|
||||
}
|
||||
stype[q]=c;
|
||||
if (l==0 && p==0)
|
||||
{
|
||||
if (r==0)
|
||||
filt->cd_values[j++]=atoi(stype);
|
||||
}
|
||||
|
||||
} /* u */
|
||||
} /* u */
|
||||
|
||||
stype[q]='\0';
|
||||
} /*if */
|
||||
stype[q]='\0';
|
||||
} /*if */
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* all other filters
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
/*-------------------------------------------------------------------------
|
||||
* all other filters
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
else
|
||||
{
|
||||
/* here we could have 1 or 2 digits */
|
||||
for ( m=0,u=i+1; u<len; u++,m++)
|
||||
{
|
||||
c = str[u];
|
||||
if (!isdigit(c)){
|
||||
if (obj_list) HDfree(obj_list);
|
||||
error_msg("compression parameter is not a digit in <%s>\n",str);
|
||||
HDexit(EXIT_FAILURE);
|
||||
}
|
||||
stype[m]=c;
|
||||
} /* u */
|
||||
else
|
||||
{
|
||||
/* here we could have 1 or 2 digits */
|
||||
for ( m=0,u=i+1; u<len; u++,m++)
|
||||
{
|
||||
c = str[u];
|
||||
if (!isdigit(c)){
|
||||
if (obj_list) HDfree(obj_list);
|
||||
error_msg("compression parameter is not a digit in <%s>\n",str);
|
||||
HDexit(EXIT_FAILURE);
|
||||
}
|
||||
stype[m]=c;
|
||||
} /* u */
|
||||
|
||||
stype[m]='\0';
|
||||
} /*if */
|
||||
stype[m]='\0';
|
||||
} /*if */
|
||||
|
||||
|
||||
|
||||
filt->cd_values[j++]=atoi(stype);
|
||||
i+=m; /* jump */
|
||||
}
|
||||
else if (i==len-1)
|
||||
{ /*no more parameters */
|
||||
scomp[k+1]='\0';
|
||||
no_param=1;
|
||||
}
|
||||
filt->cd_values[j++]=atoi(stype);
|
||||
i+=m; /* jump */
|
||||
}
|
||||
else if (i==len-1)
|
||||
{ /*no more parameters */
|
||||
scomp[k+1]='\0';
|
||||
no_param=1;
|
||||
}
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* translate from string to filter symbol
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
/*-------------------------------------------------------------------------
|
||||
* translate from string to filter symbol
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* H5Z_FILTER_NONE
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
if (HDstrcmp(scomp,"NONE")==0)
|
||||
{
|
||||
filt->filtn=H5Z_FILTER_NONE;
|
||||
filt->cd_nelmts = 0;
|
||||
}
|
||||
/*-------------------------------------------------------------------------
|
||||
* H5Z_FILTER_NONE
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
if (HDstrcmp(scomp,"NONE")==0)
|
||||
{
|
||||
filt->filtn=H5Z_FILTER_NONE;
|
||||
filt->cd_nelmts = 0;
|
||||
}
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* H5Z_FILTER_DEFLATE
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
else if (HDstrcmp(scomp,"GZIP")==0)
|
||||
{
|
||||
filt->filtn=H5Z_FILTER_DEFLATE;
|
||||
filt->cd_nelmts = 1;
|
||||
if (no_param)
|
||||
{ /*no more parameters, GZIP must have parameter */
|
||||
if (obj_list) HDfree(obj_list);
|
||||
error_msg("missing compression parameter in <%s>\n",str);
|
||||
HDexit(EXIT_FAILURE);
|
||||
}
|
||||
}
|
||||
/*-------------------------------------------------------------------------
|
||||
* H5Z_FILTER_DEFLATE
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
else if (HDstrcmp(scomp,"GZIP")==0)
|
||||
{
|
||||
filt->filtn=H5Z_FILTER_DEFLATE;
|
||||
filt->cd_nelmts = 1;
|
||||
if (no_param)
|
||||
{ /*no more parameters, GZIP must have parameter */
|
||||
if (obj_list) HDfree(obj_list);
|
||||
error_msg("missing compression parameter in <%s>\n",str);
|
||||
HDexit(EXIT_FAILURE);
|
||||
}
|
||||
}
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* H5Z_FILTER_SZIP
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
else if (HDstrcmp(scomp,"SZIP")==0)
|
||||
{
|
||||
filt->filtn=H5Z_FILTER_SZIP;
|
||||
filt->cd_nelmts = 2;
|
||||
if (no_param)
|
||||
{ /*no more parameters, SZIP must have parameter */
|
||||
if (obj_list) HDfree(obj_list);
|
||||
error_msg("missing compression parameter in <%s>\n",str);
|
||||
HDexit(EXIT_FAILURE);
|
||||
}
|
||||
}
|
||||
/*-------------------------------------------------------------------------
|
||||
* H5Z_FILTER_SZIP
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
else if (HDstrcmp(scomp,"SZIP")==0)
|
||||
{
|
||||
filt->filtn=H5Z_FILTER_SZIP;
|
||||
filt->cd_nelmts = 2;
|
||||
if (no_param)
|
||||
{ /*no more parameters, SZIP must have parameter */
|
||||
if (obj_list) HDfree(obj_list);
|
||||
error_msg("missing compression parameter in <%s>\n",str);
|
||||
HDexit(EXIT_FAILURE);
|
||||
}
|
||||
}
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* H5Z_FILTER_SHUFFLE
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
else if (HDstrcmp(scomp,"SHUF")==0)
|
||||
{
|
||||
filt->filtn=H5Z_FILTER_SHUFFLE;
|
||||
filt->cd_nelmts = 0;
|
||||
if (m>0)
|
||||
{ /*shuffle does not have parameter */
|
||||
if (obj_list) HDfree(obj_list);
|
||||
error_msg("extra parameter in SHUF <%s>\n",str);
|
||||
HDexit(EXIT_FAILURE);
|
||||
}
|
||||
}
|
||||
/*-------------------------------------------------------------------------
|
||||
* H5Z_FILTER_FLETCHER32
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
else if (HDstrcmp(scomp,"FLET")==0)
|
||||
{
|
||||
filt->filtn=H5Z_FILTER_FLETCHER32;
|
||||
filt->cd_nelmts = 0;
|
||||
if (m>0)
|
||||
{ /*shuffle does not have parameter */
|
||||
if (obj_list) HDfree(obj_list);
|
||||
error_msg("extra parameter in FLET <%s>\n",str);
|
||||
HDexit(EXIT_FAILURE);
|
||||
}
|
||||
}
|
||||
/*-------------------------------------------------------------------------
|
||||
* H5Z_FILTER_NBIT
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
else if (HDstrcmp(scomp,"NBIT")==0)
|
||||
{
|
||||
filt->filtn=H5Z_FILTER_NBIT;
|
||||
filt->cd_nelmts = 0;
|
||||
if (m>0)
|
||||
{ /*nbit does not have parameter */
|
||||
if (obj_list) HDfree(obj_list);
|
||||
error_msg("extra parameter in NBIT <%s>\n",str);
|
||||
HDexit(EXIT_FAILURE);
|
||||
}
|
||||
}
|
||||
/*-------------------------------------------------------------------------
|
||||
* H5Z_FILTER_SCALEOFFSET
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
else if (HDstrcmp(scomp,"SOFF")==0)
|
||||
{
|
||||
filt->filtn=H5Z_FILTER_SCALEOFFSET;
|
||||
filt->cd_nelmts = 2;
|
||||
if (no_param)
|
||||
{ /*no more parameters, SOFF must have parameter */
|
||||
if (obj_list) HDfree(obj_list);
|
||||
error_msg("missing compression parameter in <%s>\n",str);
|
||||
HDexit(EXIT_FAILURE);
|
||||
}
|
||||
}
|
||||
/*-------------------------------------------------------------------------
|
||||
* User Defined Filter
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
else if (HDstrcmp(scomp,"UD")==0)
|
||||
{
|
||||
if (filt->cd_nelmts != j)
|
||||
{ /* parameters does not match count */
|
||||
if (obj_list) HDfree(obj_list);
|
||||
error_msg("incorrect number of compression parameters in <%s>\n",str);
|
||||
HDexit(EXIT_FAILURE);
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (obj_list) HDfree(obj_list);
|
||||
error_msg("invalid filter type in <%s>\n",str);
|
||||
HDexit(EXIT_FAILURE);
|
||||
}
|
||||
}
|
||||
} /*i*/
|
||||
/*-------------------------------------------------------------------------
|
||||
* H5Z_FILTER_SHUFFLE
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
else if (HDstrcmp(scomp,"SHUF")==0)
|
||||
{
|
||||
filt->filtn=H5Z_FILTER_SHUFFLE;
|
||||
filt->cd_nelmts = 0;
|
||||
if (m>0)
|
||||
{ /*shuffle does not have parameter */
|
||||
if (obj_list) HDfree(obj_list);
|
||||
error_msg("extra parameter in SHUF <%s>\n",str);
|
||||
HDexit(EXIT_FAILURE);
|
||||
}
|
||||
}
|
||||
/*-------------------------------------------------------------------------
|
||||
* H5Z_FILTER_FLETCHER32
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
else if (HDstrcmp(scomp,"FLET")==0)
|
||||
{
|
||||
filt->filtn=H5Z_FILTER_FLETCHER32;
|
||||
filt->cd_nelmts = 0;
|
||||
if (m>0)
|
||||
{ /*shuffle does not have parameter */
|
||||
if (obj_list) HDfree(obj_list);
|
||||
error_msg("extra parameter in FLET <%s>\n",str);
|
||||
HDexit(EXIT_FAILURE);
|
||||
}
|
||||
}
|
||||
/*-------------------------------------------------------------------------
|
||||
* H5Z_FILTER_NBIT
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
else if (HDstrcmp(scomp,"NBIT")==0)
|
||||
{
|
||||
filt->filtn=H5Z_FILTER_NBIT;
|
||||
filt->cd_nelmts = 0;
|
||||
if (m>0)
|
||||
{ /*nbit does not have parameter */
|
||||
if (obj_list) HDfree(obj_list);
|
||||
error_msg("extra parameter in NBIT <%s>\n",str);
|
||||
HDexit(EXIT_FAILURE);
|
||||
}
|
||||
}
|
||||
/*-------------------------------------------------------------------------
|
||||
* H5Z_FILTER_SCALEOFFSET
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
else if (HDstrcmp(scomp,"SOFF")==0)
|
||||
{
|
||||
filt->filtn=H5Z_FILTER_SCALEOFFSET;
|
||||
filt->cd_nelmts = 2;
|
||||
if (no_param)
|
||||
{ /*no more parameters, SOFF must have parameter */
|
||||
if (obj_list) HDfree(obj_list);
|
||||
error_msg("missing compression parameter in <%s>\n",str);
|
||||
HDexit(EXIT_FAILURE);
|
||||
}
|
||||
}
|
||||
/*-------------------------------------------------------------------------
|
||||
* User Defined Filter
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
else if (HDstrcmp(scomp,"UD")==0)
|
||||
{
|
||||
if (filt->cd_nelmts != j)
|
||||
{ /* parameters does not match count */
|
||||
if (obj_list) HDfree(obj_list);
|
||||
error_msg("incorrect number of compression parameters in <%s>\n",str);
|
||||
HDexit(EXIT_FAILURE);
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (obj_list) HDfree(obj_list);
|
||||
error_msg("invalid filter type in <%s>\n",str);
|
||||
HDexit(EXIT_FAILURE);
|
||||
}
|
||||
}
|
||||
} /*i*/
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* check valid parameters
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
/*-------------------------------------------------------------------------
|
||||
* check valid parameters
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
switch (filt->filtn)
|
||||
{
|
||||
switch (filt->filtn)
|
||||
{
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* H5Z_FILTER_DEFLATE
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
/*-------------------------------------------------------------------------
|
||||
* H5Z_FILTER_DEFLATE
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
case H5Z_FILTER_DEFLATE:
|
||||
if (filt->cd_values[0]>9 )
|
||||
{
|
||||
if (obj_list) HDfree(obj_list);
|
||||
error_msg("invalid compression parameter in <%s>\n",str);
|
||||
HDexit(EXIT_FAILURE);
|
||||
}
|
||||
break;
|
||||
case H5Z_FILTER_DEFLATE:
|
||||
if (filt->cd_values[0]>9 )
|
||||
{
|
||||
if (obj_list) HDfree(obj_list);
|
||||
error_msg("invalid compression parameter in <%s>\n",str);
|
||||
HDexit(EXIT_FAILURE);
|
||||
}
|
||||
break;
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* H5Z_FILTER_SZIP
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
/*-------------------------------------------------------------------------
|
||||
* H5Z_FILTER_SZIP
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
case H5Z_FILTER_SZIP:
|
||||
pixels_per_block=filt->cd_values[0];
|
||||
if ((pixels_per_block%2)==1)
|
||||
{
|
||||
if (obj_list) HDfree(obj_list);
|
||||
error_msg("pixels_per_block is not even in <%s>\n",str);
|
||||
HDexit(EXIT_FAILURE);
|
||||
}
|
||||
if (pixels_per_block>H5_SZIP_MAX_PIXELS_PER_BLOCK)
|
||||
{
|
||||
if (obj_list) HDfree(obj_list);
|
||||
error_msg("pixels_per_block is too large in <%s>\n",str);
|
||||
HDexit(EXIT_FAILURE);
|
||||
}
|
||||
if ( (HDstrcmp(smask,"NN")!=0) && (HDstrcmp(smask,"EC")!=0) )
|
||||
{
|
||||
if (obj_list) HDfree(obj_list);
|
||||
error_msg("szip mask must be 'NN' or 'EC' \n");
|
||||
HDexit(EXIT_FAILURE);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
case H5Z_FILTER_SZIP:
|
||||
pixels_per_block=filt->cd_values[0];
|
||||
if ((pixels_per_block%2)==1)
|
||||
{
|
||||
if (obj_list) HDfree(obj_list);
|
||||
error_msg("pixels_per_block is not even in <%s>\n",str);
|
||||
HDexit(EXIT_FAILURE);
|
||||
}
|
||||
if (pixels_per_block>H5_SZIP_MAX_PIXELS_PER_BLOCK)
|
||||
{
|
||||
if (obj_list) HDfree(obj_list);
|
||||
error_msg("pixels_per_block is too large in <%s>\n",str);
|
||||
HDexit(EXIT_FAILURE);
|
||||
}
|
||||
if ( (HDstrcmp(smask,"NN")!=0) && (HDstrcmp(smask,"EC")!=0) )
|
||||
{
|
||||
if (obj_list) HDfree(obj_list);
|
||||
error_msg("szip mask must be 'NN' or 'EC' \n");
|
||||
HDexit(EXIT_FAILURE);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
return obj_list;
|
||||
return obj_list;
|
||||
}
|
||||
|
||||
|
||||
@ -540,9 +540,9 @@ obj_list_t* parse_filter(const char *str,
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
obj_list_t* parse_layout(const char *str,
|
||||
int *n_objs,
|
||||
pack_info_t *pack, /* info about layout needed */
|
||||
pack_opt_t *options)
|
||||
int *n_objs,
|
||||
pack_info_t *pack, /* info about layout needed */
|
||||
pack_opt_t *options)
|
||||
{
|
||||
obj_list_t* obj_list=NULL;
|
||||
unsigned i;
|
||||
@ -636,10 +636,10 @@ obj_list_t* parse_layout(const char *str,
|
||||
if ( pack->layout==H5D_CHUNKED )
|
||||
{
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* get chunk info
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
/*-------------------------------------------------------------------------
|
||||
* get chunk info
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
k=0;
|
||||
|
||||
if (j>(int)len)
|
||||
@ -656,11 +656,11 @@ obj_list_t* parse_layout(const char *str,
|
||||
k++; /*increment sdim index */
|
||||
|
||||
if (!isdigit(c) && c!='x'
|
||||
&& c!='N' && c!='O' && c!='N' && c!='E'
|
||||
){
|
||||
&& c!='N' && c!='O' && c!='N' && c!='E'
|
||||
){
|
||||
if (obj_list) HDfree(obj_list);
|
||||
error_msg("in parse layout, <%s> Not a valid character in <%s>\n",
|
||||
sdim,str);
|
||||
sdim,str);
|
||||
HDexit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
@ -673,7 +673,7 @@ obj_list_t* parse_layout(const char *str,
|
||||
if (pack->chunk.chunk_lengths[c_index]==0) {
|
||||
if (obj_list) HDfree(obj_list);
|
||||
error_msg("in parse layout, <%s> conversion to number in <%s>\n",
|
||||
sdim,str);
|
||||
sdim,str);
|
||||
HDexit(EXIT_FAILURE);
|
||||
}
|
||||
c_index++;
|
||||
@ -691,7 +691,7 @@ obj_list_t* parse_layout(const char *str,
|
||||
if (pack->chunk.chunk_lengths[c_index]==0){
|
||||
if (obj_list) HDfree(obj_list);
|
||||
error_msg("in parse layout, <%s> conversion to number in <%s>\n",
|
||||
sdim,str);
|
||||
sdim,str);
|
||||
HDexit(EXIT_FAILURE);
|
||||
}
|
||||
pack->chunk.rank=c_index+1;
|
||||
|
Loading…
x
Reference in New Issue
Block a user