summaryrefslogtreecommitdiffstats
path: root/java/src
diff options
context:
space:
mode:
authorvchoi-hdfgroup <55293060+vchoi-hdfgroup@users.noreply.github.com>2022-01-04 23:23:33 (GMT)
committerGitHub <noreply@github.com>2022-01-04 23:23:33 (GMT)
commitd8ef511b2afac659b7aed3490fedc963b70785d8 (patch)
treedbd1d5bfc413ad6b49d9ca2179d369a64e6e9df0 /java/src
parent5d453a6055b994978a3795ee2873bc4170bc576c (diff)
parenta30ca5afcd9f2e35b3a37f74286a6fe264b946f2 (diff)
downloadhdf5-d8ef511b2afac659b7aed3490fedc963b70785d8.zip
hdf5-d8ef511b2afac659b7aed3490fedc963b70785d8.tar.gz
hdf5-d8ef511b2afac659b7aed3490fedc963b70785d8.tar.bz2
Merge pull request #49 from vchoi-hdfgroup/feature/vfd_swmr
Feature/vfd swmr
Diffstat (limited to 'java/src')
-rw-r--r--java/src/hdf/hdf5lib/CMakeLists.txt22
-rw-r--r--java/src/hdf/hdf5lib/H5.java55
-rw-r--r--java/src/hdf/hdf5lib/HDFArray.java52
-rw-r--r--java/src/hdf/hdf5lib/HDFNativeData.java30
-rw-r--r--java/src/hdf/hdf5lib/callbacks/package-info.java27
-rw-r--r--java/src/hdf/hdf5lib/exceptions/package-info.java31
-rw-r--r--java/src/hdf/hdf5lib/package-info.java174
-rw-r--r--java/src/hdf/hdf5lib/structs/H5FD_hdfs_fapl_t.java15
-rw-r--r--java/src/hdf/hdf5lib/structs/H5FD_ros3_fapl_t.java15
-rw-r--r--java/src/hdf/hdf5lib/structs/package-info.java17
-rw-r--r--java/src/jni/h5Constants.c12
-rw-r--r--java/src/jni/h5util.c31
12 files changed, 364 insertions, 117 deletions
diff --git a/java/src/hdf/hdf5lib/CMakeLists.txt b/java/src/hdf/hdf5lib/CMakeLists.txt
index 5651031..a26e117 100644
--- a/java/src/hdf/hdf5lib/CMakeLists.txt
+++ b/java/src/hdf/hdf5lib/CMakeLists.txt
@@ -40,6 +40,11 @@ set (HDF5_JAVA_HDF_HDF5_CALLBACKS_SOURCES
callbacks/Callbacks.java
)
+set (HDF5_JAVADOC_HDF_HDF5_CALLBACKS_SOURCES
+ ${HDF5_JAVA_HDF_HDF5_CALLBACKS_SOURCES}
+ callbacks/package-info.java
+)
+
set (HDF5_JAVA_HDF_HDF5_EXCEPTIONS_SOURCES
exceptions/HDF5Exception.java
exceptions/HDF5IdException.java
@@ -67,6 +72,11 @@ set (HDF5_JAVA_HDF_HDF5_EXCEPTIONS_SOURCES
exceptions/HDF5SymbolTableException.java
)
+set (HDF5_JAVADOC_HDF_HDF5_EXCEPTIONS_SOURCES
+ ${HDF5_JAVA_HDF_HDF5_EXCEPTIONS_SOURCES}
+ exceptions/package-info.java
+)
+
set (HDF5_JAVA_HDF_HDF5_STRUCTS_SOURCES
structs/H5_ih_info_t.java
structs/H5A_info_t.java
@@ -83,6 +93,11 @@ set (HDF5_JAVA_HDF_HDF5_STRUCTS_SOURCES
structs/H5O_token_t.java
)
+set (HDF5_JAVADOC_HDF_HDF5_STRUCTS_SOURCES
+ ${HDF5_JAVA_HDF_HDF5_STRUCTS_SOURCES}
+ structs/package-info.java
+)
+
set (HDF5_JAVA_HDF_HDF5_SOURCES
HDFArray.java
HDF5Constants.java
@@ -91,6 +106,11 @@ set (HDF5_JAVA_HDF_HDF5_SOURCES
H5.java
)
+set (HDF5_JAVADOC_HDF_HDF5_SOURCES
+ ${HDF5_JAVA_HDF_HDF5_SOURCES}
+ package-info.java
+)
+
set (CMAKE_JNI_TARGET TRUE)
file (WRITE ${PROJECT_BINARY_DIR}/Manifest.txt
@@ -114,7 +134,7 @@ add_dependencies (${HDF5_JAVA_HDF5_LIB_TARGET} ${HDF5_JAVA_JNI_LIB_TARGET})
set_target_properties (${HDF5_JAVA_HDF5_LIB_TARGET} PROPERTIES FOLDER libraries/java)
create_javadoc(hdf5_java_doc
- FILES ${HDF5_JAVA_HDF_HDF5_CALLBACKS_SOURCES} ${HDF5_JAVA_HDF_HDF5_EXCEPTIONS_SOURCES} ${HDF5_JAVA_HDF_HDF5_STRUCTS_SOURCES} ${HDF5_JAVA_HDF_HDF5_SOURCES}
+ FILES ${HDF5_JAVADOC_HDF_HDF5_CALLBACKS_SOURCES} ${HDF5_JAVADOC_HDF_HDF5_EXCEPTIONS_SOURCES} ${HDF5_JAVADOC_HDF_HDF5_STRUCTS_SOURCES} ${HDF5_JAVADOC_HDF_HDF5_SOURCES}
OVERVIEW ${HDF5_JAVA_HDF5_SRC_DIR}/overview.html
CLASSPATH ${CMAKE_JAVA_INCLUDE_PATH}
WINDOWTITLE "HDF5 Java"
diff --git a/java/src/hdf/hdf5lib/H5.java b/java/src/hdf/hdf5lib/H5.java
index 63547df..4129f50 100644
--- a/java/src/hdf/hdf5lib/H5.java
+++ b/java/src/hdf/hdf5lib/H5.java
@@ -64,8 +64,8 @@ import hdf.hdf5lib.structs.H5O_token_t;
* This code is the called by Java programs to access the entry points of the HDF5 library. Each routine wraps a single
* HDF5 entry point, generally with the arguments and return codes analogous to the C interface.
* <p>
- * For details of the HDF5 library, see the HDF5 Documentation at: <a
- * href="http://hdfgroup.org/HDF5/">http://hdfgroup.org/HDF5/</a>
+ * For details of the HDF5 library, see the HDF5 Documentation at:
+ * <a href="http://hdfgroup.org/HDF5/">http://hdfgroup.org/HDF5/</a>
* <hr>
* <p>
* <b>Mapping of arguments for Java</b>
@@ -162,8 +162,8 @@ import hdf.hdf5lib.structs.H5O_token_t;
* <p>
* For Java, this ``ANY'' is a problem, as the type of data must always be declared. Furthermore, multidimensional
* arrays are definitely <i>not</i> layed out contiguously in memory. It would be infeasible to declare a separate
- * routine for every combination of number type and dimensionality. For that reason, the <a
- * href="./hdf.hdf5lib.HDFArray.html"><b>HDFArray</b></a> class is used to discover the type, shape, and size of the
+ * routine for every combination of number type and dimensionality. For that reason, the
+ * <a href="./hdf.hdf5lib.HDFArray.html"><b>HDFArray</b></a> class is used to discover the type, shape, and size of the
* data array at run time, and to convert to and from a contiguous array of bytes in synchronized static native C order.
* <p>
* The upshot is that any Java array of numbers (either primitive or sub-classes of type <b>Number</b>) can be passed as
@@ -187,8 +187,8 @@ import hdf.hdf5lib.structs.H5O_token_t;
* <b><i>H5F_ACC_RDWR</i></b> and <b><i>H5P_DEFAULT</i></b>.
* <p>
* The HDF-5 API defines a set of values that describe number types and sizes, such as "H5T_NATIVE_INT" and "hsize_t".
- * These values are determined at run time by the HDF-5 C library. To support these parameters, the Java class <a
- * href="./hdf.hdf5lib.HDF5CDataTypes.html"> <b>HDF5CDataTypes</b></a> looks up the values when initiated. The values
+ * These values are determined at run time by the HDF-5 C library. To support these parameters, the Java class
+ * <a href="./hdf.hdf5lib.HDF5CDataTypes.html"> <b>HDF5CDataTypes</b></a> looks up the values when initiated. The values
* can be accessed as public variables of the Java class, such as:
*
* <pre>
@@ -204,8 +204,8 @@ import hdf.hdf5lib.structs.H5O_token_t;
* JHI5. Errors are converted into Java exceptions. This is totally different from the C interface, but is very natural
* for Java programming.
* <p>
- * The exceptions of the JHI5 are organized as sub-classes of the class <a
- * href="./hdf.hdf5lib.exceptions.HDF5Exception.html"> <b>HDF5Exception</b></a>. There are two subclasses of
+ * The exceptions of the JHI5 are organized as sub-classes of the class
+ * <a href="./hdf.hdf5lib.exceptions.HDF5Exception.html"> <b>HDF5Exception</b></a>. There are two subclasses of
* <b>HDF5Exception</b>, <a href="./hdf.hdf5lib.exceptions.HDF5LibraryException.html"> <b>HDF5LibraryException</b></a>
* and <a href="./hdf.hdf5lib.exceptions.HDF5JavaException.html"> <b>HDF5JavaException</b></a>. The sub-classes of the
* former represent errors from the HDF-5 C library, while sub-classes of the latter represent errors in the JHI5
@@ -216,7 +216,7 @@ import hdf.hdf5lib.structs.H5O_token_t;
* exception handlers to print out the HDF-5 error stack.
* <hr>
*
- * @version HDF5 1.13.0 <BR>
+ * @version HDF5 1.13.1 <BR>
* <b>See also: <a href ="./hdf.hdf5lib.HDFArray.html"> hdf.hdf5lib.HDFArray</a> </b><BR>
* <a href ="./hdf.hdf5lib.HDF5Constants.html"> hdf.hdf5lib.HDF5Constants</a><BR>
* <a href ="./hdf.hdf5lib.HDF5CDataTypes.html"> hdf.hdf5lib.HDF5CDataTypes</a><BR>
@@ -239,7 +239,7 @@ public class H5 implements java.io.Serializable {
*
* Make sure to update the versions number when a different library is used.
*/
- public final static int LIB_VERSION[] = { 1, 13, 0 };
+ public final static int LIB_VERSION[] = { 1, 13, 1 };
/**
* add system property to load library by path
@@ -12776,8 +12776,11 @@ public class H5 implements java.io.Serializable {
* IN: Field name of the field index to retrieve.
*
* @return if field is defined, the index; else negative.
+ *
+ * @exception HDF5LibraryException
+ * - Error from the HDF-5 Library.
**/
- public synchronized static native int H5Tget_member_index(long type_id, String field_name);
+ public synchronized static native int H5Tget_member_index(long type_id, String field_name) throws HDF5LibraryException;
/**
* H5Tget_member_name retrieves the name of a field of a compound datatype or an element of an enumeration datatype.
@@ -12788,8 +12791,11 @@ public class H5 implements java.io.Serializable {
* IN: Field index (0-based) of the field name to retrieve.
*
* @return a valid pointer to the name if successful; otherwise null.
+ *
+ * @exception HDF5LibraryException
+ * - Error from the HDF-5 Library.
**/
- public synchronized static native String H5Tget_member_name(long type_id, int field_idx);
+ public synchronized static native String H5Tget_member_name(long type_id, int field_idx) throws HDF5LibraryException;
/**
* H5Tget_member_offset returns the byte offset of the specified member of the compound datatype. This is the byte
@@ -12801,11 +12807,8 @@ public class H5 implements java.io.Serializable {
* IN: Field index (0-based) of the field type to retrieve.
*
* @return the offset of the member.
- *
- * @exception HDF5LibraryException
- * - Error from the HDF-5 Library.
**/
- public synchronized static native long H5Tget_member_offset(long type_id, int membno) throws HDF5LibraryException;
+ public synchronized static native long H5Tget_member_offset(long type_id, int membno);
/**
* H5Tget_member_type returns the datatype of the specified member.
@@ -13460,7 +13463,7 @@ public class H5 implements java.io.Serializable {
* @exception HDF5LibraryException
* - Error from the HDF-5 Library.
**/
- public synchronized static native long H5VLregister_connector_by_name(String connector_name, long vipl_id);
+ public synchronized static native long H5VLregister_connector_by_name(String connector_name, long vipl_id) throws HDF5LibraryException;
/**
* H5VLregister_connector_by_value registers a new VOL connector as a member of the virtual object layer class.
*
@@ -13475,7 +13478,7 @@ public class H5 implements java.io.Serializable {
* @exception HDF5LibraryException
* - Error from the HDF-5 Library.
**/
- public synchronized static native long H5VLregister_connector_by_value(int connector_value, long vipl_id);
+ public synchronized static native long H5VLregister_connector_by_value(int connector_value, long vipl_id) throws HDF5LibraryException;
/**
* H5VLis_connector_registered_by_name tests whether a VOL class has been registered.
*
@@ -13487,7 +13490,7 @@ public class H5 implements java.io.Serializable {
* @exception HDF5LibraryException
* - Error from the HDF-5 Library.
**/
- public synchronized static native boolean H5VLis_connector_registered_by_name(String name);
+ public synchronized static native boolean H5VLis_connector_registered_by_name(String name) throws HDF5LibraryException;
/**
* H5VLis_connector_registered_by_value tests whether a VOL class has been registered.
*
@@ -13499,7 +13502,7 @@ public class H5 implements java.io.Serializable {
* @exception HDF5LibraryException
* - Error from the HDF-5 Library.
**/
- public synchronized static native boolean H5VLis_connector_registered_by_value(int connector_value);
+ public synchronized static native boolean H5VLis_connector_registered_by_value(int connector_value) throws HDF5LibraryException;
/**
* H5VLget_connector_id retrieves the ID for a registered VOL connector for a given object.
*
@@ -13511,7 +13514,7 @@ public class H5 implements java.io.Serializable {
* @exception HDF5LibraryException
* - Error from the HDF-5 Library.
**/
- public synchronized static native long H5VLget_connector_id(long object_id);
+ public synchronized static native long H5VLget_connector_id(long object_id) throws HDF5LibraryException;
/**
* H5VLget_connector_id_by_name retrieves the ID for a registered VOL connector.
*
@@ -13523,7 +13526,7 @@ public class H5 implements java.io.Serializable {
* @exception HDF5LibraryException
* - Error from the HDF-5 Library.
**/
- public synchronized static native long H5VLget_connector_id_by_name(String name);
+ public synchronized static native long H5VLget_connector_id_by_name(String name) throws HDF5LibraryException;
/**
* H5VLget_connector_id_by_value retrieves the ID for a registered VOL connector.
*
@@ -13535,7 +13538,7 @@ public class H5 implements java.io.Serializable {
* @exception HDF5LibraryException
* - Error from the HDF-5 Library.
**/
- public synchronized static native long H5VLget_connector_id_by_value(int connector_value);
+ public synchronized static native long H5VLget_connector_id_by_value(int connector_value) throws HDF5LibraryException;
/**
* H5VLget_connector_name returns the connector name for the VOL associated with the
* object or file ID.
@@ -13548,7 +13551,7 @@ public class H5 implements java.io.Serializable {
* @exception HDF5LibraryException
* - Error from the HDF-5 Library.
**/
- public synchronized static native String H5VLget_connector_name(long object_id);
+ public synchronized static native String H5VLget_connector_name(long object_id) throws HDF5LibraryException;
/**
* H5VLclose closes a VOL connector ID.
*
@@ -13558,7 +13561,7 @@ public class H5 implements java.io.Serializable {
* @exception HDF5LibraryException
* - Error from the HDF-5 Library.
**/
- public synchronized static native void H5VLclose(long connector_id);
+ public synchronized static native void H5VLclose(long connector_id) throws HDF5LibraryException;
/**
* H5VLunregister_connector removes a VOL connector ID from the library.
*
@@ -13568,7 +13571,7 @@ public class H5 implements java.io.Serializable {
* @exception HDF5LibraryException
* - Error from the HDF-5 Library.
**/
- public synchronized static native void H5VLunregister_connector(long connector_id);
+ public synchronized static native void H5VLunregister_connector(long connector_id) throws HDF5LibraryException;
// /////// unimplemented ////////
// hid_t H5VLregister_connector(const H5VL_class_t *cls, hid_t vipl_id);
diff --git a/java/src/hdf/hdf5lib/HDFArray.java b/java/src/hdf/hdf5lib/HDFArray.java
index bb9357e..21e2b02 100644
--- a/java/src/hdf/hdf5lib/HDFArray.java
+++ b/java/src/hdf/hdf5lib/HDFArray.java
@@ -46,10 +46,10 @@ public class HDFArray {
*
* @param anArray
* The array object.
- * @exception hdf.hdf5lib.exceptions.HDF5Exception
- * object is not an array.
+ * @exception hdf.hdf5lib.exceptions.HDF5JavaException
+ * object is not an array.
*/
- public HDFArray(Object anArray) throws HDF5Exception
+ public HDFArray(Object anArray) throws HDF5JavaException
{
if (anArray == null) {
HDF5JavaException ex = new HDF5JavaException("HDFArray: array is null?: ");
@@ -76,16 +76,14 @@ public class HDFArray {
* @return A one-D array of bytes, filled with zeroes. The bytes are sufficient to hold the data of the Array passed
* to the constructor.
* @exception hdf.hdf5lib.exceptions.HDF5JavaException
- * Allocation failed.
+ * Allocation failed.
*/
- public byte[] emptyBytes()
- throws HDF5JavaException
+ public byte[] emptyBytes() throws HDF5JavaException
{
byte[] b = null;
- if ((ArrayDescriptor.dims == 1)
- && (ArrayDescriptor.NT == 'B')) {
+ if ((ArrayDescriptor.dims == 1) && (ArrayDescriptor.NT == 'B')) {
b = (byte[]) _theArray;
}
else {
@@ -103,10 +101,9 @@ public class HDFArray {
*
* @return A one-D array of bytes, constructed from the Array passed to the constructor.
* @exception hdf.hdf5lib.exceptions.HDF5JavaException
- * the object not an array or other internal error.
+ * the object not an array or other internal error.
*/
- public byte[] byteify()
- throws HDF5JavaException
+ public byte[] byteify() throws HDF5JavaException
{
if (_barray != null) {
return _barray;
@@ -224,8 +221,6 @@ public class HDFArray {
if (ArrayDescriptor.NT == 'J') {
arow = HDFNativeData.longToByte(0, ArrayDescriptor.dimlen[ArrayDescriptor.dims],
(long[]) ArrayDescriptor.objs[ArrayDescriptor.dims - 1]);
- arow = HDFNativeData.longToByte(0, ArrayDescriptor.dimlen[ArrayDescriptor.dims],
- (long[]) ArrayDescriptor.objs[ArrayDescriptor.dims - 1]);
}
else if (ArrayDescriptor.NT == 'I') {
arow = HDFNativeData.intToByte(0, ArrayDescriptor.dimlen[ArrayDescriptor.dims],
@@ -552,8 +547,7 @@ public class HDFArray {
+ "?"));
}
}
- if (ArrayDescriptor.currentindex[ArrayDescriptor.dims - 1] != ArrayDescriptor.dimlen[ArrayDescriptor.dims
- - 1]) {
+ if (ArrayDescriptor.currentindex[ArrayDescriptor.dims - 1] != ArrayDescriptor.dimlen[ArrayDescriptor.dims - 1]) {
throw new java.lang.InternalError(
new String("HDFArray::arrayify Panic didn't complete all data: currentindex[" + i + "] = "
+ ArrayDescriptor.currentindex[i] + " (should be " + (ArrayDescriptor.dimlen[i]) + "?"));
@@ -580,7 +574,7 @@ public class HDFArray {
Integer[] out = new Integer[nelems];
for (int i = 0; i < nelems; i++) {
- out[i] = new Integer(in[i]);
+ out[i] = Integer.valueOf(in[i]);
}
return out;
}
@@ -592,7 +586,7 @@ public class HDFArray {
Integer[] out = new Integer[nelems];
for (int i = 0; i < nelems; i++) {
- out[i] = new Integer(in[i]);
+ out[i] = Integer.valueOf(in[i]);
}
return out;
}
@@ -615,7 +609,7 @@ public class HDFArray {
Short[] out = new Short[nelems];
for (int i = 0; i < nelems; i++) {
- out[i] = new Short(in[i]);
+ out[i] = Short.valueOf(in[i]);
}
return out;
}
@@ -627,7 +621,7 @@ public class HDFArray {
Short[] out = new Short[nelems];
for (int i = 0; i < nelems; i++) {
- out[i] = new Short(in[i]);
+ out[i] = Short.valueOf(in[i]);
}
return out;
}
@@ -649,7 +643,7 @@ public class HDFArray {
Byte[] out = new Byte[nelems];
for (int i = 0; i < nelems; i++) {
- out[i] = new Byte(bin[i]);
+ out[i] = Byte.valueOf(bin[i]);
}
return out;
}
@@ -659,7 +653,7 @@ public class HDFArray {
Byte[] out = new Byte[len];
for (int i = 0; i < len; i++) {
- out[i] = new Byte(bin[i]);
+ out[i] = Byte.valueOf(bin[i]);
}
return out;
}
@@ -682,7 +676,7 @@ public class HDFArray {
Float[] out = new Float[nelems];
for (int i = 0; i < nelems; i++) {
- out[i] = new Float(in[i]);
+ out[i] = Float.valueOf(in[i]);
}
return out;
}
@@ -694,7 +688,7 @@ public class HDFArray {
Float[] out = new Float[nelems];
for (int i = 0; i < nelems; i++) {
- out[i] = new Float(in[i]);
+ out[i] = Float.valueOf(in[i]);
}
return out;
}
@@ -717,7 +711,7 @@ public class HDFArray {
Double[] out = new Double[nelems];
for (int i = 0; i < nelems; i++) {
- out[i] = new Double(in[i]);
+ out[i] = Double.valueOf(in[i]);
}
return out;
}
@@ -729,7 +723,7 @@ public class HDFArray {
Double[] out = new Double[nelems];
for (int i = 0; i < nelems; i++) {
- out[i] = new Double(in[i]);
+ out[i] = Double.valueOf(in[i]);
}
return out;
}
@@ -752,7 +746,7 @@ public class HDFArray {
Long[] out = new Long[nelems];
for (int i = 0; i < nelems; i++) {
- out[i] = new Long(in[i]);
+ out[i] = Long.valueOf(in[i]);
}
return out;
}
@@ -764,7 +758,7 @@ public class HDFArray {
Long[] out = new Long[nelems];
for (int i = 0; i < nelems; i++) {
- out[i] = new Long(in[i]);
+ out[i] = Long.valueOf(in[i]);
}
return out;
}
@@ -790,12 +784,12 @@ class ArrayDescriptor {
static int dims = 0;
static String className;
- public ArrayDescriptor(Object anArray) throws HDF5Exception
+ public ArrayDescriptor(Object anArray) throws HDF5JavaException
{
Class tc = anArray.getClass();
if (tc.isArray() == false) {
/* exception: not an array */
- HDF5Exception ex = new HDF5JavaException("ArrayDescriptor: not an array?: ");
+ HDF5JavaException ex = new HDF5JavaException("ArrayDescriptor: not an array?: ");
throw (ex);
}
diff --git a/java/src/hdf/hdf5lib/HDFNativeData.java b/java/src/hdf/hdf5lib/HDFNativeData.java
index 5b29050..85378db 100644
--- a/java/src/hdf/hdf5lib/HDFNativeData.java
+++ b/java/src/hdf/hdf5lib/HDFNativeData.java
@@ -153,8 +153,7 @@ public class HDFNativeData {
* The input array of bytes
* @return an array of 'len' float
*/
- public synchronized static native float[] byteToFloat(int start, int len,
- byte[] data);
+ public synchronized static native float[] byteToFloat(int start, int len, byte[] data);
/**
* Convert 4 bytes from an array of bytes into a single float
@@ -437,41 +436,38 @@ public class HDFNativeData {
* - Error unsupported type.
*/
public synchronized static Object byteToNumber(byte[] barray, Object obj)
- throws HDF5Exception {
+ throws HDF5Exception
+ {
Class theClass = obj.getClass();
String type = theClass.getName();
Object retobj = null;
if (type.equals("java.lang.Integer")) {
int[] i = hdf.hdf5lib.HDFNativeData.byteToInt(0, 1, barray);
- retobj = new Integer(i[0]);
+ retobj = Integer.valueOf(i[0]);
}
else if (type.equals("java.lang.Byte")) {
- retobj = new Byte(barray[0]);
+ retobj = Byte.valueOf(barray[0]);
}
else if (type.equals("java.lang.Short")) {
- short[] f = hdf.hdf5lib.HDFNativeData
- .byteToShort(0, 1, barray);
- retobj = new Short(f[0]);
+ short[] f = hdf.hdf5lib.HDFNativeData.byteToShort(0, 1, barray);
+ retobj = Short.valueOf(f[0]);
}
else if (type.equals("java.lang.Float")) {
- float[] f = hdf.hdf5lib.HDFNativeData
- .byteToFloat(0, 1, barray);
- retobj = new Float(f[0]);
+ float[] f = hdf.hdf5lib.HDFNativeData.byteToFloat(0, 1, barray);
+ retobj = Float.valueOf(f[0]);
}
else if (type.equals("java.lang.Long")) {
long[] f = hdf.hdf5lib.HDFNativeData.byteToLong(0, 1, barray);
- retobj = new Long(f[0]);
+ retobj = Long.valueOf(f[0]);
}
else if (type.equals("java.lang.Double")) {
- double[] f = hdf.hdf5lib.HDFNativeData.byteToDouble(0, 1,
- barray);
- retobj = new Double(f[0]);
+ double[] f = hdf.hdf5lib.HDFNativeData.byteToDouble(0, 1, barray);
+ retobj = Double.valueOf(f[0]);
}
else {
/* exception: unsupported type */
- HDF5Exception ex = new HDF5JavaException(
- "byteToNumber: setfield bad type: " + obj + " " + type);
+ HDF5Exception ex = new HDF5JavaException("byteToNumber: setfield bad type: " + obj + " " + type);
throw (ex);
}
return (retobj);
diff --git a/java/src/hdf/hdf5lib/callbacks/package-info.java b/java/src/hdf/hdf5lib/callbacks/package-info.java
new file mode 100644
index 0000000..0833162
--- /dev/null
+++ b/java/src/hdf/hdf5lib/callbacks/package-info.java
@@ -0,0 +1,27 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Copyright by The HDF Group. *
+ * *
+ * 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 COPYING file, which can be found at the root of the source code *
+ * distribution tree, or in https://www.hdfgroup.org/licenses. *
+ * If you do not have access to either file, you may request a copy from *
+ * help@hdfgroup.org. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+/** All callback definitions must derive from the Callbacks interface. Any
+ * derived interfaces must define a single public method named "callback".
+ * You are responsible for deregistering your callback (if necessary)
+ * in its {@link Object#finalize} method. If native code attempts to call
+ * a callback which has been GC'd, you will likely crash the VM. If
+ * there is no method to deregister the callback (e.g. <code>atexit</code>
+ * in the C library), you must ensure that you always keep a live reference
+ * to the callback object.<p>
+ * A callback should generally never throw an exception, since it doesn't
+ * necessarily have an encompassing Java environment to catch it. Any
+ * exceptions thrown will be passed to the default callback exception
+ * handler.
+ */
+package hdf.hdf5lib.callbacks;
diff --git a/java/src/hdf/hdf5lib/exceptions/package-info.java b/java/src/hdf/hdf5lib/exceptions/package-info.java
new file mode 100644
index 0000000..8640ccb
--- /dev/null
+++ b/java/src/hdf/hdf5lib/exceptions/package-info.java
@@ -0,0 +1,31 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Copyright by The HDF Group. *
+ * *
+ * 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 COPYING file, which can be found at the root of the source code *
+ * distribution tree, or in https://www.hdfgroup.org/licenses. *
+ * If you do not have access to either file, you may request a copy from *
+ * help@hdfgroup.org. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+/**
+ * <p>
+ * The package exceptions contains error classes for the Java HDF5 Interface.
+ * <p>
+ * There are two sub-classes of exceptions defined:
+ * <ol>
+ * <li>
+ * HDF5LibraryException -- errors raised the HDF5 library code
+ * <li>
+ * HDF5JavaException -- errors raised the HDF5 Java wrapper code
+ * </ol>
+ * <p>
+ * The HDF5LibraryException is the base class for the classes that represent specific error conditions.
+ * In particular, HDF5LibraryException has a sub-class for each major
+ * error code returned by the HDF5 library.
+ *
+ */
+package hdf.hdf5lib.exceptions; \ No newline at end of file
diff --git a/java/src/hdf/hdf5lib/package-info.java b/java/src/hdf/hdf5lib/package-info.java
new file mode 100644
index 0000000..838a266
--- /dev/null
+++ b/java/src/hdf/hdf5lib/package-info.java
@@ -0,0 +1,174 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Copyright by The HDF Group. *
+ * *
+ * 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 COPYING file, which can be found at the root of the source code *
+ * distribution tree, or in https://www.hdfgroup.org/licenses. *
+ * If you do not have access to either file, you may request a copy from *
+ * help@hdfgroup.org. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+
+/**
+ * This package is the Java interface for the HDF5 library.
+ * <p>
+ * This code is the called by Java programs to access the entry points of the HDF5 library. Each routine wraps a single
+ * HDF5 entry point, generally with the arguments and return codes analogous to the C interface.
+ * <p>
+ * For details of the HDF5 library, see the HDF5 Documentation at:
+ * <a href="http://hdfgroup.org/HDF5/">http://hdfgroup.org/HDF5/</a>
+ * <hr>
+ * <p>
+ * <b>Mapping of arguments for Java</b>
+ *
+ * <p>
+ * In general, arguments to the HDF Java API are straightforward translations from the 'C' API described in the HDF
+ * Reference Manual.
+ *
+ * <table border=1>
+ * <caption><b>HDF-5 C types to Java types</b> </caption>
+ * <tr>
+ * <td><b>HDF-5</b></td>
+ * <td><b>Java</b></td>
+ * </tr>
+ * <tr>
+ * <td>H5T_NATIVE_INT</td>
+ * <td>int, Integer</td>
+ * </tr>
+ * <tr>
+ * <td>H5T_NATIVE_SHORT</td>
+ * <td>short, Short</td>
+ * </tr>
+ * <tr>
+ * <td>H5T_NATIVE_FLOAT</td>
+ * <td>float, Float</td>
+ * </tr>
+ * <tr>
+ * <td>H5T_NATIVE_DOUBLE</td>
+ * <td>double, Double</td>
+ * </tr>
+ * <tr>
+ * <td>H5T_NATIVE_CHAR</td>
+ * <td>byte, Byte</td>
+ * </tr>
+ * <tr>
+ * <td>H5T_C_S1</td>
+ * <td>java.lang.String</td>
+ * </tr>
+ * <tr>
+ * <td>void * <BR>
+ * (i.e., pointer to `Any')</td>
+ * <td>Special -- see HDFArray</td>
+ * </tr>
+ * </table>
+ * <b>General Rules for Passing Arguments and Results</b>
+ * <p>
+ * In general, arguments passed <b>IN</b> to Java are the analogous basic types, as above. The exception is for arrays,
+ * which are discussed below.
+ * <p>
+ * The <i>return value</i> of Java methods is also the analogous type, as above. A major exception to that rule is that
+ * all HDF functions that return SUCCEED/FAIL are declared <i>boolean</i> in the Java version, rather than <i>int</i> as
+ * in the C. Functions that return a value or else FAIL are declared the equivalent to the C function. However, in most
+ * cases the Java method will raise an exception instead of returning an error code.
+ * See <a href="#ERRORS">Errors and Exceptions</a> below.
+ * <p>
+ * Java does not support pass by reference of arguments, so arguments that are returned through <b>OUT</b> parameters
+ * must be wrapped in an object or array. The Java API for HDF consistently wraps arguments in arrays.
+ * <p>
+ * For instance, a function that returns two integers is declared:
+ *
+ * <pre>
+ * h_err_t HDF5dummy( int *a1, int *a2)
+ * </pre>
+ *
+ * For the Java interface, this would be declared:
+ *
+ * <pre>
+ * public synchronized static native void HDF5dummy(int args[]);
+ * </pre>
+ *
+ * where <i>a1</i> is <i>args[0]</i> and <i>a2</i> is <i>args[1]</i>, and would be invoked:
+ *
+ * <pre>
+ * H5.HDF5dummy(a);
+ * </pre>
+ *
+ * <p>
+ * All the routines where this convention is used will have specific documentation of the details, given below.
+ * <p>
+ * <b>Arrays</b>
+ * <p>
+ * HDF5 needs to read and write multi-dimensional arrays of any number type (and records). The HDF5 API describes the
+ * layout of the source and destination, and the data for the array passed as a block of bytes, for instance,
+ *
+ * <pre>
+ * herr_t H5Dread(long fid, long filetype, long memtype, long memspace, void *data);
+ * </pre>
+ *
+ * <p>
+ * where ``void *'' means that the data may be any valid numeric type, and is a contiguous block of bytes that is the
+ * data for a multi-dimensional array. The other parameters describe the dimensions, rank, and datatype of the array on
+ * disk (source) and in memory (destination).
+ * <p>
+ * For Java, this ``ANY'' is a problem, as the type of data must always be declared. Furthermore, multidimensional
+ * arrays are definitely <i>not</i> layed out contiguously in memory. It would be infeasible to declare a separate
+ * routine for every combination of number type and dimensionality. For that reason, the
+ * <a href="./hdf.hdf5lib.HDFArray.html"><b>HDFArray</b></a> class is used to discover the type, shape, and size of the
+ * data array at run time, and to convert to and from a contiguous array of bytes in synchronized static native C order.
+ * <p>
+ * The upshot is that any Java array of numbers (either primitive or sub-classes of type <b>Number</b>) can be passed as
+ * an ``Object'', and the Java API will translate to and from the appropriate packed array of bytes needed by the C
+ * library. So the function above would be declared:
+ *
+ * <pre>
+ * public synchronized static native int H5Dread(long fid, long filetype, long memtype, long memspace, Object data);
+ * </pre>
+ * OPEN_IDS.addElement(id);
+
+ * and the parameter <i>data</i> can be any multi-dimensional array of numbers, such as float[][], or int[][][], or
+ * Double[][].
+ * <p>
+ * <b>HDF-5 Constants</b>
+ * <p>
+ * The HDF-5 API defines a set of constants and enumerated values. Most of these values are available to Java programs
+ * via the class <a href="./hdf.hdf5lib.HDF5Constants.html"> <b>HDF5Constants</b></a>. For example, the parameters for
+ * the h5open() call include two numeric values, <b><i>HDFConstants.H5F_ACC_RDWR</i></b> and
+ * <b><i>HDF5Constants.H5P_DEFAULT</i></b>. As would be expected, these numbers correspond to the C constants
+ * <b><i>H5F_ACC_RDWR</i></b> and <b><i>H5P_DEFAULT</i></b>.
+ * <p>
+ * The HDF-5 API defines a set of values that describe number types and sizes, such as "H5T_NATIVE_INT" and "hsize_t".
+ * These values are determined at run time by the HDF-5 C library. To support these parameters, the Java class
+ * <a href="./hdf.hdf5lib.HDF5CDataTypes.html"> <b>HDF5CDataTypes</b></a> looks up the values when initiated. The values
+ * can be accessed as public variables of the Java class, such as:
+ *
+ * <pre>
+ * long data_type = HDF5CDataTypes.JH5T_NATIVE_INT;
+ * </pre>
+ *
+ * The Java application uses both types of constants the same way, the only difference is that the
+ * <b><i>HDF5CDataTypes</i></b> may have different values on different platforms.
+ * <p>
+ * <b>Error handling and Exceptions</b>
+ * <p>
+ * The HDF5 error API (H5E) manages the behavior of the error stack in the HDF-5 library. This API is available from the
+ * JHI5. Errors are converted into Java exceptions. This is totally different from the C interface, but is very natural
+ * for Java programming.
+ * <p>
+ * The exceptions of the JHI5 are organized as sub-classes of the class
+ * <a href="./hdf.hdf5lib.exceptions.HDF5Exception.html"> <b>HDF5Exception</b></a>. There are two subclasses of
+ * <b>HDF5Exception</b>, <a href="./hdf.hdf5lib.exceptions.HDF5LibraryException.html"> <b>HDF5LibraryException</b></a>
+ * and <a href="./hdf.hdf5lib.exceptions.HDF5JavaException.html"> <b>HDF5JavaException</b></a>. The sub-classes of the
+ * former represent errors from the HDF-5 C library, while sub-classes of the latter represent errors in the JHI5
+ * wrapper and support code.
+ * <p>
+ * The super-class <b><i>HDF5LibraryException</i></b> implements the method '<b><i>printStackTrace()</i></b>', which
+ * prints out the HDF-5 error stack, as described in the HDF-5 C API <i><b>H5Eprint()</b>.</i> This may be used by Java
+ * exception handlers to print out the HDF-5 error stack.
+ * <hr>
+ *
+ * <b>See also: <a href="http://hdfgroup.org/HDF5/"> http://hdfgroup.org/HDF5"</a></b>
+ **/
+package hdf.hdf5lib; \ No newline at end of file
diff --git a/java/src/hdf/hdf5lib/structs/H5FD_hdfs_fapl_t.java b/java/src/hdf/hdf5lib/structs/H5FD_hdfs_fapl_t.java
index 5da4abd..95a9254 100644
--- a/java/src/hdf/hdf5lib/structs/H5FD_hdfs_fapl_t.java
+++ b/java/src/hdf/hdf5lib/structs/H5FD_hdfs_fapl_t.java
@@ -1,15 +1,14 @@
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * Read-Only HDFS Virtual File Driver (VFD) *
- * Copyright (c) 2018, The HDF Group. *
+ * Copyright by The HDF Group. *
* *
* All rights reserved. *
* *
- * NOTICE: *
- * All information contained herein is, and remains, the property of The HDF *
- * Group. The intellectual and technical concepts contained herein are *
- * proprietary to The HDF Group. Dissemination of this information or *
- * reproduction of this material is strictly forbidden unless prior written *
- * permission is obtained from The HDF Group. *
+ * This file is part of HDF5. The full HDF5 copyright notice, including *
+ * terms governing use, modification, and redistribution, is contained in *
+ * the COPYING file, which can be found at the root of the source code *
+ * distribution tree, or in https://www.hdfgroup.org/licenses. *
+ * If you do not have access to either file, you may request a copy from *
+ * help@hdfgroup.org. *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
package hdf.hdf5lib.structs;
diff --git a/java/src/hdf/hdf5lib/structs/H5FD_ros3_fapl_t.java b/java/src/hdf/hdf5lib/structs/H5FD_ros3_fapl_t.java
index 39f5424..ad02979 100644
--- a/java/src/hdf/hdf5lib/structs/H5FD_ros3_fapl_t.java
+++ b/java/src/hdf/hdf5lib/structs/H5FD_ros3_fapl_t.java
@@ -1,15 +1,14 @@
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * Read-Only S3 Virtual File Driver (VFD) *
- * Copyright (c) 2017-2018, The HDF Group. *
+ * Copyright by The HDF Group. *
* *
* All rights reserved. *
* *
- * NOTICE: *
- * All information contained herein is, and remains, the property of The HDF *
- * Group. The intellectual and technical concepts contained herein are *
- * proprietary to The HDF Group. Dissemination of this information or *
- * reproduction of this material is strictly forbidden unless prior written *
- * permission is obtained from The HDF Group. *
+ * This file is part of HDF5. The full HDF5 copyright notice, including *
+ * terms governing use, modification, and redistribution, is contained in *
+ * the COPYING file, which can be found at the root of the source code *
+ * distribution tree, or in https://www.hdfgroup.org/licenses. *
+ * If you do not have access to either file, you may request a copy from *
+ * help@hdfgroup.org. *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
package hdf.hdf5lib.structs;
diff --git a/java/src/hdf/hdf5lib/structs/package-info.java b/java/src/hdf/hdf5lib/structs/package-info.java
new file mode 100644
index 0000000..8a9d97d
--- /dev/null
+++ b/java/src/hdf/hdf5lib/structs/package-info.java
@@ -0,0 +1,17 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Copyright by The HDF Group. *
+ * *
+ * 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 COPYING file, which can be found at the root of the source code *
+ * distribution tree, or in https://www.hdfgroup.org/licenses. *
+ * If you do not have access to either file, you may request a copy from *
+ * help@hdfgroup.org. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+/** All structure definitions define java equivalents of the C structures needed
+ * by the C API calls. See the C API for information about the structures.
+ */
+package hdf.hdf5lib.structs;
diff --git a/java/src/jni/h5Constants.c b/java/src/jni/h5Constants.c
index 7354e95..bdffdbd 100644
--- a/java/src/jni/h5Constants.c
+++ b/java/src/jni/h5Constants.c
@@ -26,8 +26,8 @@ extern "C" {
#include <stdlib.h>
#include "h5jni.h"
-H5_GCC_DIAG_OFF("missing-prototypes")
-H5_GCC_DIAG_OFF("unused-parameter")
+H5_GCC_CLANG_DIAG_OFF("missing-prototypes")
+H5_GCC_CLANG_DIAG_OFF("unused-parameter")
JNIEXPORT jlong JNICALL
Java_hdf_hdf5lib_HDF5Constants_H5_1QUARTER_1HADDR_1MAX(JNIEnv *env, jclass cls)
@@ -1212,7 +1212,7 @@ Java_hdf_hdf5lib_HDF5Constants_H5ES_1STATUS_1FAIL(JNIEnv *env, jclass cls)
}
/* Java does not have unsigned native types */
-H5_GCC_DIAG_OFF("sign-conversion")
+H5_GCC_CLANG_DIAG_OFF("sign-conversion")
JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_HDF5Constants_H5F_1ACC_1CREAT(JNIEnv *env, jclass cls)
{
@@ -1253,7 +1253,7 @@ Java_hdf_hdf5lib_HDF5Constants_H5F_1ACC_1SWMR_1WRITE(JNIEnv *env, jclass cls)
{
return H5F_ACC_SWMR_WRITE;
}
-H5_GCC_DIAG_ON("sign-conversion")
+H5_GCC_CLANG_DIAG_ON("sign-conversion")
JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_HDF5Constants_H5F_1CLOSE_1DEFAULT(JNIEnv *env, jclass cls)
@@ -3724,8 +3724,8 @@ Java_hdf_hdf5lib_HDF5Constants_H5Z_1FILTER_1ALL(JNIEnv *env, jclass cls)
return H5Z_FILTER_ALL;
}
-H5_GCC_DIAG_ON("missing-prototypes")
-H5_GCC_DIAG_ON("unused-parameter")
+H5_GCC_CLANG_DIAG_ON("missing-prototypes")
+H5_GCC_CLANG_DIAG_ON("unused-parameter")
#ifdef __cplusplus
} /* end extern "C" */
diff --git a/java/src/jni/h5util.c b/java/src/jni/h5util.c
index 8021438..7313c28 100644
--- a/java/src/jni/h5util.c
+++ b/java/src/jni/h5util.c
@@ -237,7 +237,7 @@ h5str_convert(JNIEnv *env, char **in_str, hid_t container, hid_t tid, void *out_
HDmemcpy(cptr, &tmp_double, sizeof(double));
break;
}
-#if H5_SIZEOF_LONG_DOUBLE != 0 && H5_SIZEOF_LONG_DOUBLE != H5_SIZEOF_DOUBLE
+#if H5_SIZEOF_LONG_DOUBLE != H5_SIZEOF_DOUBLE
case sizeof(long double): {
long double tmp_ldouble = 0.0;
@@ -658,8 +658,6 @@ h5str_sprint_reference(JNIEnv *env, h5str_t *out_str, void *ref_p)
int ret_value = FAIL;
- if (!h5str_append(out_str, " \""))
- H5_ASSERTION_ERROR(ENVONLY, "Unable to append string.");
buf_size = H5Rget_file_name(ref_vp, NULL, 0);
if (buf_size) {
ref_name = (char *)HDmalloc(sizeof(char) * (size_t)buf_size + 1);
@@ -697,8 +695,6 @@ h5str_sprint_reference(JNIEnv *env, h5str_t *out_str, void *ref_p)
ref_name = NULL;
}
}
- if (!h5str_append(out_str, "\""))
- H5_ASSERTION_ERROR(ENVONLY, "Unable to append string.");
ret_value = SUCCEED;
done:
@@ -725,6 +721,10 @@ h5str_region_dataset(JNIEnv *env, h5str_t *out_str, H5R_ref_t *ref_vp, int expan
if ((new_obj_sid = H5Ropen_region(ref_vp, H5P_DEFAULT, H5P_DEFAULT)) < 0)
H5_LIBRARY_ERROR(ENVONLY);
+ if (expand_data == 0)
+ if (h5str_sprint_reference(ENVONLY, out_str, ref_vp) < 0)
+ CHECK_JNI_EXCEPTION(ENVONLY, JNI_FALSE);
+
if ((region_type = H5Sget_select_type(new_obj_sid)) > H5S_SEL_ERROR) {
if (H5S_SEL_POINTS == region_type) {
if (h5str_dump_region_points(ENVONLY, out_str, new_obj_sid, new_obj_id, expand_data) < 0)
@@ -816,7 +816,7 @@ h5str_sprintf(JNIEnv *env, h5str_t *out_str, hid_t container, hid_t tid, void *i
break;
}
-#if H5_SIZEOF_LONG_DOUBLE != 0 && H5_SIZEOF_LONG_DOUBLE != H5_SIZEOF_DOUBLE
+#if H5_SIZEOF_LONG_DOUBLE != H5_SIZEOF_DOUBLE
case sizeof(long double): {
long double tmp_ldouble = 0.0;
@@ -870,11 +870,8 @@ h5str_sprintf(JNIEnv *env, h5str_t *out_str, hid_t container, hid_t tid, void *i
}
else {
if (typeSize > 0) {
- if (NULL == (this_str = (char *)HDmalloc(typeSize + 1)))
+ if (NULL == (this_str = HDstrdup(tmp_str)))
H5_OUT_OF_MEMORY_ERROR(ENVONLY, "h5str_sprintf: failed to allocate string buffer");
-
- HDstrncpy(this_str, tmp_str, typeSize);
- this_str[typeSize] = '\0';
}
}
@@ -3664,19 +3661,14 @@ obj_info_all(hid_t loc_id, const char *name, const H5L_info2_t *info, void *op_d
info_all_t *datainfo = (info_all_t *)op_data;
H5O_info2_t object_info;
htri_t object_exists;
- size_t str_len;
datainfo->otype[datainfo->count] = -1;
datainfo->ltype[datainfo->count] = -1;
datainfo->obj_token[datainfo->count] = H5O_TOKEN_UNDEF;
- str_len = HDstrlen(name);
- if (NULL == (datainfo->objname[datainfo->count] = (char *)HDmalloc(str_len + 1)))
+ if (NULL == (datainfo->objname[datainfo->count] = HDstrdup(name)))
goto done;
- HDstrncpy(datainfo->objname[datainfo->count], name, str_len);
- (datainfo->objname[datainfo->count])[str_len] = '\0';
-
if ((object_exists = H5Oexists_by_name(loc_id, name, H5P_DEFAULT)) < 0)
goto done;
@@ -3702,7 +3694,6 @@ obj_info_max(hid_t loc_id, const char *name, const H5L_info2_t *info, void *op_d
{
info_all_t *datainfo = (info_all_t *)op_data;
H5O_info2_t object_info;
- size_t str_len;
datainfo->otype[datainfo->count] = -1;
datainfo->ltype[datainfo->count] = -1;
@@ -3710,13 +3701,9 @@ obj_info_max(hid_t loc_id, const char *name, const H5L_info2_t *info, void *op_d
datainfo->obj_token[datainfo->count] = H5O_TOKEN_UNDEF;
/* This will be freed by h5str_array_free(oName, n) */
- str_len = HDstrlen(name);
- if (NULL == (datainfo->objname[datainfo->count] = (char *)HDmalloc(str_len + 1)))
+ if (NULL == (datainfo->objname[datainfo->count] = HDstrdup(name)))
goto done;
- HDstrncpy(datainfo->objname[datainfo->count], name, str_len);
- (datainfo->objname[datainfo->count])[str_len] = '\0';
-
if (H5Oget_info3(loc_id, &object_info, H5O_INFO_ALL) < 0)
goto done;