2
0
mirror of https://github.com/HDFGroup/hdf5.git synced 2025-03-19 16:50:46 +08:00

Add high-level set/get for unsigned long long attributes. ()

* add ULL attr set/get signatures to LT public API

* add LT implementation of ULL set/get attribute

* fix copy-paste typo in test comment

* add ULL test data

* define ullong attr name global variable

* add LT tests for ULL attr set/get

* Committing clang-format changes

* correct type passed to lt get attr test for ULL

* update RELEASE.txt with added ULL set/get functionality

Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
This commit is contained in:
Alessandro Felder 2021-09-08 21:53:15 +01:00 committed by GitHub
parent 919f9daec6
commit 8e06298ecf
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 143 additions and 33 deletions

@ -1775,6 +1775,32 @@ H5LTset_attribute_ulong(hid_t loc_id, const char *obj_name, const char *attr_nam
return 0;
}
/*-------------------------------------------------------------------------
* Function: H5LTset_attribute_ullong
*
* Purpose: Create and write an attribute.
*
* Return: Success: 0, Failure: -1
*
* Programmer: Alessandro Felder
*
* Date: August 27, 2021
*
* Comments:
*
*-------------------------------------------------------------------------
*/
herr_t
H5LTset_attribute_ullong(hid_t loc_id, const char *obj_name, const char *attr_name,
const unsigned long long *data, size_t size)
{
if (H5LT_set_attribute_numerical(loc_id, obj_name, attr_name, size, H5T_NATIVE_ULLONG, data) < 0)
return -1;
return 0;
}
/*-------------------------------------------------------------------------
* Function: H5LTset_attribute_float
*
@ -3316,6 +3342,33 @@ H5LTget_attribute_ulong(hid_t loc_id, const char *obj_name, const char *attr_nam
return 0;
}
/*-------------------------------------------------------------------------
* Function: H5LTget_attribute_ullong
*
* Purpose: Reads an attribute named attr_name
*
* Return: Success: 0, Failure: -1
*
* Programmer: Alessandro Felder
*
* Date: August 27, 2021
*
* Comments:
*
* Modifications:
*
*-------------------------------------------------------------------------
*/
herr_t
H5LTget_attribute_ullong(hid_t loc_id, const char *obj_name, const char *attr_name, unsigned long long *data)
{
/* Get the attribute */
if (H5LT_get_attribute_mem(loc_id, obj_name, attr_name, H5T_NATIVE_ULLONG, data) < 0)
return -1;
return 0;
}
/*-------------------------------------------------------------------------
* Function: H5LTget_attribute_float
*

@ -139,6 +139,9 @@ H5_HLDLL herr_t H5LTset_attribute_long_long(hid_t loc_id, const char *obj_name,
H5_HLDLL herr_t H5LTset_attribute_ulong(hid_t loc_id, const char *obj_name, const char *attr_name,
const unsigned long *buffer, size_t size);
H5_HLDLL herr_t H5LTset_attribute_ullong(hid_t loc_id, const char *obj_name, const char *attr_name,
const unsigned long long *buffer, size_t size);
H5_HLDLL herr_t H5LTset_attribute_float(hid_t loc_id, const char *obj_name, const char *attr_name,
const float *buffer, size_t size);
@ -182,6 +185,9 @@ H5_HLDLL herr_t H5LTget_attribute_long_long(hid_t loc_id, const char *obj_name,
H5_HLDLL herr_t H5LTget_attribute_ulong(hid_t loc_id, const char *obj_name, const char *attr_name,
unsigned long *data);
H5_HLDLL herr_t H5LTget_attribute_ullong(hid_t loc_id, const char *obj_name, const char *attr_name,
unsigned long long *data);
H5_HLDLL herr_t H5LTget_attribute_float(hid_t loc_id, const char *obj_name, const char *attr_name,
float *data);

@ -43,8 +43,9 @@
#define ATTR7_NAME "attr ushort"
#define ATTR8_NAME "attr uint"
#define ATTR9_NAME "attr ulong"
#define ATTR10_NAME "attr float"
#define ATTR11_NAME "attr double"
#define ATTR10_NAME "attr ullong"
#define ATTR11_NAME "attr float"
#define ATTR12_NAME "attr double"
static herr_t make_attributes(hid_t loc_id, const char *obj_name);
@ -472,28 +473,30 @@ make_attributes(hid_t loc_id, const char *obj_name)
size_t type_size;
int i;
char attr_str_in[] = {"My attribute"};
char attr_str_out[20];
char attr_char_in[5] = {1, 2, 3, 4, 5};
char attr_char_out[5];
short attr_short_in[5] = {1, 2, 3, 4, 5};
short attr_short_out[5];
int attr_int_in[5] = {1, 2, 3, 4, 5};
int attr_int_out[5];
long attr_long_in[5] = {1, 2, 3, 4, 5};
long attr_long_out[5];
float attr_float_in[5] = {1, 2, 3, 4, 5};
float attr_float_out[5];
double attr_double_in[5] = {1, 2, 3, 4, 5};
double attr_double_out[5];
unsigned char attr_uchar_in[5] = {1, 2, 3, 4, 5};
unsigned char attr_uchar_out[5];
unsigned short attr_ushort_in[5] = {1, 2, 3, 4, 5};
unsigned short attr_ushort_out[5];
unsigned int attr_uint_in[5] = {1, 2, 3, 4, 5};
unsigned int attr_uint_out[5];
unsigned long attr_ulong_in[5] = {1, 2, 3, 4, 5};
unsigned long attr_ulong_out[5];
char attr_str_in[] = {"My attribute"};
char attr_str_out[20];
char attr_char_in[5] = {1, 2, 3, 4, 5};
char attr_char_out[5];
short attr_short_in[5] = {1, 2, 3, 4, 5};
short attr_short_out[5];
int attr_int_in[5] = {1, 2, 3, 4, 5};
int attr_int_out[5];
long attr_long_in[5] = {1, 2, 3, 4, 5};
long attr_long_out[5];
float attr_float_in[5] = {1, 2, 3, 4, 5};
float attr_float_out[5];
double attr_double_in[5] = {1, 2, 3, 4, 5};
double attr_double_out[5];
unsigned char attr_uchar_in[5] = {1, 2, 3, 4, 5};
unsigned char attr_uchar_out[5];
unsigned short attr_ushort_in[5] = {1, 2, 3, 4, 5};
unsigned short attr_ushort_out[5];
unsigned int attr_uint_in[5] = {1, 2, 3, 4, 5};
unsigned int attr_uint_out[5];
unsigned long attr_ulong_in[5] = {1, 2, 3, 4, 5};
unsigned long attr_ulong_out[5];
unsigned long long attr_ullong_in[5] = {1, 2, 3, 4, 5};
unsigned long long attr_ullong_out[5];
/*-------------------------------------------------------------------------
* H5LTset_attribute_string test
@ -509,7 +512,7 @@ make_attributes(hid_t loc_id, const char *obj_name)
PASSED();
/*-------------------------------------------------------------------------
* H5LTset_attribute_string test
* H5LTget_attribute_string test
*-------------------------------------------------------------------------
*/
@ -859,7 +862,7 @@ make_attributes(hid_t loc_id, const char *obj_name)
PASSED();
/*-------------------------------------------------------------------------
* H5LTget_attribute_long test
* H5LTget_attribute_ulong test
*-------------------------------------------------------------------------
*/
@ -887,6 +890,48 @@ make_attributes(hid_t loc_id, const char *obj_name)
PASSED();
/*-------------------------------------------------------------------------
* H5LTset_attribute_ullong test
*-------------------------------------------------------------------------
*/
HL_TESTING2("H5LTset_attribute_ullong");
/* Set the attribute */
if (H5LTset_attribute_ullong(loc_id, obj_name, ATTR10_NAME, attr_ullong_in, (size_t)5) < 0)
return -1;
PASSED();
/*-------------------------------------------------------------------------
* H5LTget_attribute_ullong test
*-------------------------------------------------------------------------
*/
HL_TESTING2("H5LTget_attribute_ullong");
/* Get the attribute */
if (H5LTget_attribute_ullong(loc_id, obj_name, ATTR10_NAME, attr_ullong_out) < 0)
return -1;
for (i = 0; i < 5; i++) {
if (attr_ullong_in[i] != attr_ullong_out[i]) {
return -1;
}
}
/* Get the attribute */
if (H5LTget_attribute(loc_id, obj_name, ATTR10_NAME, H5T_NATIVE_ULLONG, attr_ullong_out) < 0)
return -1;
for (i = 0; i < 5; i++) {
if (attr_ullong_in[i] != attr_ullong_out[i]) {
return -1;
}
}
PASSED();
/*-------------------------------------------------------------------------
* H5LTset_attribute_float test
*-------------------------------------------------------------------------
@ -895,7 +940,7 @@ make_attributes(hid_t loc_id, const char *obj_name)
HL_TESTING2("H5LTset_attribute_float");
/* Set the attribute */
if (H5LTset_attribute_float(loc_id, obj_name, ATTR10_NAME, attr_float_in, (size_t)5) < 0)
if (H5LTset_attribute_float(loc_id, obj_name, ATTR11_NAME, attr_float_in, (size_t)5) < 0)
return -1;
PASSED();
@ -908,7 +953,7 @@ make_attributes(hid_t loc_id, const char *obj_name)
HL_TESTING2("H5LTget_attribute_float");
/* Get the attribute */
if (H5LTget_attribute_float(loc_id, obj_name, ATTR10_NAME, attr_float_out) < 0)
if (H5LTget_attribute_float(loc_id, obj_name, ATTR11_NAME, attr_float_out) < 0)
return -1;
for (i = 0; i < 5; i++) {
@ -918,7 +963,7 @@ make_attributes(hid_t loc_id, const char *obj_name)
}
/* Get the attribute */
if (H5LTget_attribute(loc_id, obj_name, ATTR10_NAME, H5T_NATIVE_FLOAT, attr_float_out) < 0)
if (H5LTget_attribute(loc_id, obj_name, ATTR11_NAME, H5T_NATIVE_FLOAT, attr_float_out) < 0)
return -1;
for (i = 0; i < 5; i++) {
@ -937,7 +982,7 @@ make_attributes(hid_t loc_id, const char *obj_name)
HL_TESTING2("H5LTset_attribute_double");
/* Set the attribute */
if (H5LTset_attribute_double(loc_id, obj_name, ATTR11_NAME, attr_double_in, (size_t)5) < 0)
if (H5LTset_attribute_double(loc_id, obj_name, ATTR12_NAME, attr_double_in, (size_t)5) < 0)
return -1;
PASSED();
@ -950,7 +995,7 @@ make_attributes(hid_t loc_id, const char *obj_name)
HL_TESTING2("H5LTget_attribute_double");
/* Get the attribute */
if (H5LTget_attribute_double(loc_id, obj_name, ATTR11_NAME, attr_double_out) < 0)
if (H5LTget_attribute_double(loc_id, obj_name, ATTR12_NAME, attr_double_out) < 0)
return -1;
for (i = 0; i < 5; i++) {
@ -960,7 +1005,7 @@ make_attributes(hid_t loc_id, const char *obj_name)
}
/* Get the attribute */
if (H5LTget_attribute(loc_id, obj_name, ATTR11_NAME, H5T_NATIVE_DOUBLE, attr_double_out) < 0)
if (H5LTget_attribute(loc_id, obj_name, ATTR12_NAME, H5T_NATIVE_DOUBLE, attr_double_out) < 0)
return -1;
for (i = 0; i < 5; i++) {

@ -907,7 +907,13 @@ New Features
High-Level APIs:
----------------
-
- added set/get for unsigned long long attributes
the attribute writing high-level API has been expanded to include
public set/get functions for ULL attributes, analogously to the
existing set/get for other types.
(AF - 2021/09/08)
C Packet Table API:
-------------------