![]() |
HDF5
1.15.0.919ce7a
API Reference
|
Functions/Subroutines | |
subroutine | h5lcopy_f (src_loc_id, src_name, dest_loc_id, dest_name, hdferr, lcpl_id, lapl_id) |
Copies a link from one location to another. More... | |
subroutine | h5ldelete_f (loc_id, name, hdferr, lapl_id) |
Removes a link from a group. More... | |
subroutine | h5ldelete_async_f (loc_id, name, es_id, hdferr, lapl_id, file, func, line) |
Asynchronously removes a link from a group. More... | |
subroutine | h5lcreate_soft_f (target_path, link_loc_id, link_name, hdferr, lcpl_id, lapl_id) |
Creates a soft link to an object. More... | |
subroutine | h5lcreate_soft_async_f (target_path, link_loc_id, link_name, es_id, hdferr, lcpl_id, lapl_id, file, func, line) |
Asynchronously creates a soft link to an object. More... | |
subroutine | h5lcreate_hard_f (obj_loc_id, obj_name, link_loc_id, link_name, hdferr, lcpl_id, lapl_id) |
Creates a hard link to an object. More... | |
subroutine | h5lcreate_hard_async_f (obj_loc_id, obj_name, link_loc_id, link_name, es_id, hdferr, lcpl_id, lapl_id, file, func, line) |
Asynchronously creates a hard link to an object. More... | |
subroutine | h5lcreate_external_f (file_name, obj_name, link_loc_id, link_name, hdferr, lcpl_id, lapl_id) |
Creates a soft link to an object in a different file. More... | |
subroutine | h5ldelete_by_idx_f (loc_id, group_name, index_field, order, n, hdferr, lapl_id) |
Removes the nth link in a group. More... | |
subroutine | h5ldelete_by_idx_async_f (loc_id, group_name, index_field, order, n, es_id, hdferr, lapl_id, file, func, line) |
Asynchronously removes the nth link in a group. More... | |
subroutine | h5lexists_f (loc_id, name, link_exists, hdferr, lapl_id) |
Check if a link with a particular name exists in a group. More... | |
subroutine | h5lexists_async_f (loc_id, name, link_exists, es_id, hdferr, lapl_id, file, func, line) |
Asynchronously checks if a link with a particular name exists in a group. More... | |
subroutine | h5lget_info_f (link_loc_id, link_name, cset, corder, f_corder_valid, link_type, token, val_size, hdferr, lapl_id) |
Returns information about a link. More... | |
subroutine | h5lget_info_by_idx_f (loc_id, group_name, index_field, order, n, link_type, f_corder_valid, corder, cset, token, val_size, hdferr, lapl_id) |
Retrieves metadata for a link in a group, according to the order within a field or index. More... | |
subroutine | h5lis_registered_f (link_cls_id, registered, hdferr) |
Determines whether a class of user-defined links is registered. More... | |
subroutine | h5lmove_f (src_loc_id, src_name, dest_loc_id, dest_name, hdferr, lcpl_id, lapl_id) |
Renames a link within an HDF5 file. More... | |
subroutine | h5lget_name_by_idx_f (loc_id, group_name, index_field, order, n, name, hdferr, size, lapl_id) |
Retrieves name of the nth link in a group, according to the order within a specified field or index. More... | |
subroutine | h5literate_f (group_id, idx_type, order, idx, op, op_data, return_value, hdferr) |
$ SUBROUTINE h5lget_val_by_idx_f(loc_id, group_name, index_field, order, n, & $ f_corder_valid, corder, cset, data_size, hdferr, lapl_id) $ IMPLICIT NONE More... | |
subroutine | h5literate_async_f (group_id, idx_type, order, idx, op, op_data, return_value, es_id, hdferr, file, func, line) |
Asynchronously iterates through links in a group. More... | |
subroutine | h5literate_by_name_f (loc_id, group_name, index_type, order, idx, op, op_data, return_value, hdferr, lapl_id) |
Iterates through links in a group. More... | |
Variables | |
integer | h5l_type_error_f |
H5L_TYPE_ERROR. More... | |
integer | h5l_type_hard_f |
H5L_TYPE_HARD. More... | |
integer | h5l_type_soft_f |
H5L_TYPE_SOFT. More... | |
integer | h5l_type_external_f |
H5L_TYPE_EXTERNAL. More... | |
integer | h5l_same_loc_f |
H5L_SAME_LOC. More... | |
integer | h5l_link_class_t_vers_f |
H5L_LINK_CLASS_T_VERS. More... | |
subroutine h5l::h5lcopy_f | ( | integer(hid_t), intent(in) | src_loc_id, |
character(len=*), intent(in) | src_name, | ||
integer(hid_t), intent(in) | dest_loc_id, | ||
character(len=*), intent(in) | dest_name, | ||
integer, intent(out) | hdferr, | ||
integer(hid_t), intent(in), optional | lcpl_id, | ||
integer(hid_t), intent(in), optional | lapl_id | ||
) |
Copies a link from one location to another.
src_loc_id | Location identifier. The identifier may be that of a file, group, dataset, or named datatype. |
src_name | Name of the link to be copied. |
dest_loc_id | Location identifier. The identifier may be that of a file, group, dataset, or named datatype. |
dest_name | Name to be assigned to the new copy. |
hdferr | Returns 0 if successful and -1 if it fails. |
lcpl_id | Link creation property list identifier. |
lapl_id | Link access property list identifier. |
See C API: H5Lcopy()
subroutine h5l::h5lcreate_external_f | ( | character(len=*), intent(in) | file_name, |
character(len=*), intent(in) | obj_name, | ||
integer(hid_t), intent(in) | link_loc_id, | ||
character(len=*), intent(in) | link_name, | ||
integer, intent(out) | hdferr, | ||
integer(hid_t), intent(in), optional | lcpl_id, | ||
integer(hid_t), intent(in), optional | lapl_id | ||
) |
Creates a soft link to an object in a different file.
file_name | Name of the file containing the target object. Neither the file nor the target object is required to exist. May be the file the link is being created in. |
obj_name | Path within the target file to the target object. |
link_loc_id | The file or group identifier for the new link. |
link_name | The name of the new link. |
hdferr | Returns 0 if successful and -1 if it fails. |
lcpl_id | Link creation property list identifier. |
lapl_id | Link access property list identifier. |
See C API: H5Lcreate_external()
subroutine h5l::h5lcreate_hard_async_f | ( | integer(hid_t), intent(in) | obj_loc_id, |
character(len=*), intent(in) | obj_name, | ||
integer(hid_t), intent(in) | link_loc_id, | ||
character(len=*), intent(in) | link_name, | ||
integer(hid_t), intent(in) | es_id, | ||
integer, intent(out) | hdferr, | ||
integer(hid_t), intent(in), optional | lcpl_id, | ||
integer(hid_t), intent(in), optional | lapl_id, | ||
type(c_ptr), intent(in), optional | file, | ||
type(c_ptr), intent(in), optional | func, | ||
integer, intent(in), optional | line | ||
) |
Asynchronously creates a hard link to an object.
obj_loc_id | The file or group identifier for the target object. |
obj_name | Name of the target object, which must already exist. |
link_loc_id | The file or group identifier for the new link. |
link_name | The name of the new link. |
es_id | Event set identifier |
hdferr | Returns 0 if successful and -1 if it fails. |
lcpl_id | Link creation property list identifier. |
lapl_id | Link access property list identifier. |
file | Pointer to filename the async subroutine is being called from, filename must be null character terminated |
func | Pointer to function name the async subroutine is being called in, func must be null character terminated |
line | Line number the async subroutine is being called at |
See C API: H5Lcreate_hard_async()
subroutine h5l::h5lcreate_hard_f | ( | integer(hid_t), intent(in) | obj_loc_id, |
character(len=*), intent(in) | obj_name, | ||
integer(hid_t), intent(in) | link_loc_id, | ||
character(len=*), intent(in) | link_name, | ||
integer, intent(out) | hdferr, | ||
integer(hid_t), intent(in), optional | lcpl_id, | ||
integer(hid_t), intent(in), optional | lapl_id | ||
) |
Creates a hard link to an object.
obj_loc_id | The file or group identifier for the target object. |
obj_name | Name of the target object, which must already exist. |
link_loc_id | The file or group identifier for the new link. |
link_name | The name of the new link. |
hdferr | Returns 0 if successful and -1 if it fails. |
lcpl_id | Link creation property list identifier. |
lapl_id | Link access property list identifier. |
See C API: H5Lcreate_hard()
subroutine h5l::h5lcreate_soft_async_f | ( | character(len=*), intent(in) | target_path, |
integer(hid_t), intent(in) | link_loc_id, | ||
character(len=*), intent(in) | link_name, | ||
integer(hid_t), intent(in) | es_id, | ||
integer, intent(out) | hdferr, | ||
integer(hid_t), intent(in), optional | lcpl_id, | ||
integer(hid_t), intent(in), optional | lapl_id, | ||
type(c_ptr), intent(in), optional | file, | ||
type(c_ptr), intent(in), optional | func, | ||
integer, intent(in), optional | line | ||
) |
Asynchronously creates a soft link to an object.
target_path | Path to the target object, which is not required to exist. |
link_loc_id | The file or group identifier for the new link. |
link_name | The name of the new link. |
es_id | Event set identifier |
hdferr | Returns 0 if successful and -1 if it fails. |
lcpl_id | Link creation property list identifier. |
lapl_id | Link access property list identifier. |
file | Pointer to filename the async subroutine is being called from, filename must be null character terminated |
func | Pointer to function name the async subroutine is being called in, func must be null character terminated |
line | Line number the async subroutine is being called at |
See C API: H5Lcreate_soft_async()
subroutine h5l::h5lcreate_soft_f | ( | character(len=*), intent(in) | target_path, |
integer(hid_t), intent(in) | link_loc_id, | ||
character(len=*), intent(in) | link_name, | ||
integer, intent(out) | hdferr, | ||
integer(hid_t), intent(in), optional | lcpl_id, | ||
integer(hid_t), intent(in), optional | lapl_id | ||
) |
Creates a soft link to an object.
target_path | Path to the target object, which is not required to exist. |
link_loc_id | The file or group identifier for the new link. |
link_name | The name of the new link. |
hdferr | Returns 0 if successful and -1 if it fails. |
lcpl_id | Link creation property list identifier. |
lapl_id | Link access property list identifier. |
See C API: H5Lcreate_soft()
subroutine h5l::h5ldelete_async_f | ( | integer(hid_t), intent(in) | loc_id, |
character(len=*), intent(in) | name, | ||
integer(hid_t), intent(in) | es_id, | ||
integer, intent(out) | hdferr, | ||
integer(hid_t), intent(in), optional | lapl_id, | ||
type(c_ptr), intent(in), optional | file, | ||
type(c_ptr), intent(in), optional | func, | ||
integer, intent(in), optional | line | ||
) |
Asynchronously removes a link from a group.
loc_id | Identifier of the file or group containing the object. |
name | Name of the link to delete. |
es_id | Event set identifier |
hdferr | Returns 0 if successful and -1 if it fails. |
lapl_id | Link access property list identifier. |
file | Pointer to filename the async subroutine is being called from, filename must be null character terminated |
func | Pointer to function name the async subroutine is being called in, func must be null character terminated |
line | Line number the async subroutine is being called at |
See C API: H5Ldelete_async()
subroutine h5l::h5ldelete_by_idx_async_f | ( | integer(hid_t), intent(in) | loc_id, |
character(len=*), intent(in) | group_name, | ||
integer, intent(in) | index_field, | ||
integer, intent(in) | order, | ||
integer(hsize_t), intent(in) | n, | ||
integer(hid_t), intent(in) | es_id, | ||
integer, intent(out) | hdferr, | ||
integer(hid_t), intent(in), optional | lapl_id, | ||
type(c_ptr), intent(in), optional | file, | ||
type(c_ptr), intent(in), optional | func, | ||
integer, intent(in), optional | line | ||
) |
Asynchronously removes the nth link in a group.
loc_id | File or group identifier specifying location of subject group. |
group_name | Name of subject group. |
index_field | Type of index; Possible values are:
|
order | Order within field or index; Possible values are:
|
n | Link for which to retrieve information. |
es_id | Event set identifier |
hdferr | Returns 0 if successful and -1 if it fails. |
lapl_id | Link access property list. |
file | Pointer to filename the async subroutine is being called from, filename must be null character terminated |
func | Pointer to function name the async subroutine is being called in, func must be null character terminated |
line | Line number the async subroutine is being called at |
See C API: H5Ldelete_by_idx_async()
subroutine h5l::h5ldelete_by_idx_f | ( | integer(hid_t), intent(in) | loc_id, |
character(len=*), intent(in) | group_name, | ||
integer, intent(in) | index_field, | ||
integer, intent(in) | order, | ||
integer(hsize_t), intent(in) | n, | ||
integer, intent(out) | hdferr, | ||
integer(hid_t), intent(in), optional | lapl_id | ||
) |
Removes the nth link in a group.
loc_id | File or group identifier specifying location of subject group. |
group_name | Name of subject group. |
index_field | Type of index; Possible values are:
|
order | Order within field or index; Possible values are:
|
n | Link for which to retrieve information. |
hdferr | Returns 0 if successful and -1 if it fails. |
lapl_id | Link access property list. |
See C API: H5Ldelete_by_idx()
subroutine h5l::h5ldelete_f | ( | integer(hid_t), intent(in) | loc_id, |
character(len=*), intent(in) | name, | ||
integer, intent(out) | hdferr, | ||
integer(hid_t), intent(in), optional | lapl_id | ||
) |
Removes a link from a group.
loc_id | Identifier of the file or group containing the object. |
name | Name of the link to delete. |
hdferr | Returns 0 if successful and -1 if it fails. |
lapl_id | Link access property list identifier. |
See C API: H5Ldelete()
subroutine h5l::h5lexists_async_f | ( | integer(hid_t), intent(in) | loc_id, |
character(len=*), intent(in) | name, | ||
type(c_ptr), intent(in) | link_exists, | ||
integer(hid_t), intent(in) | es_id, | ||
integer, intent(out) | hdferr, | ||
integer(hid_t), intent(in), optional | lapl_id, | ||
type(c_ptr), intent(in), optional | file, | ||
type(c_ptr), intent(in), optional | func, | ||
integer, intent(in), optional | line | ||
) |
Asynchronously checks if a link with a particular name exists in a group.
loc_id | Identifier of the file or group to query. |
name | Link name to check. |
link_exists | Pointer to link exists status. It should be declared INTEGER(C_INT) and initialized to zero (false) for portability. It will return one when true. LOGICAL(C_BOOL) is also acceptable but may encounter atypical anomalies. It should be initialized to false when used. |
es_id | Event set identifier |
hdferr | Returns 0 if successful and -1 if it fails. |
lapl_id | Link access property list identifier. |
file | Pointer to filename the async subroutine is being called from, filename must be null character terminated |
func | Pointer to function name the async subroutine is being called in, func must be null character terminated |
line | Line number the async subroutine is being called at |
See C API: H5Lexists_async()
subroutine h5l::h5lexists_f | ( | integer(hid_t), intent(in) | loc_id, |
character(len=*), intent(in) | name, | ||
logical, intent(out) | link_exists, | ||
integer, intent(out) | hdferr, | ||
integer(hid_t), intent(in), optional | lapl_id | ||
) |
Check if a link with a particular name exists in a group.
loc_id | Identifier of the file or group to query. |
name | Link name to check. |
link_exists | Link exists status (.TRUE.,.FALSE.). |
hdferr | Returns 0 if successful and -1 if it fails. |
lapl_id | Link access property list identifier. |
See C API: H5Lexists()
subroutine h5l::h5lget_info_by_idx_f | ( | integer(hid_t), intent(in) | loc_id, |
character(len=*), intent(in) | group_name, | ||
integer, intent(in) | index_field, | ||
integer, intent(in) | order, | ||
integer(hsize_t), intent(in) | n, | ||
integer, intent(out) | link_type, | ||
logical, intent(out) | f_corder_valid, | ||
integer, intent(out) | corder, | ||
integer, intent(out) | cset, | ||
type(h5o_token_t_f), intent(out), target | token, | ||
integer(size_t), intent(out) | val_size, | ||
integer, intent(out) | hdferr, | ||
integer(hid_t), intent(in), optional | lapl_id | ||
) |
Retrieves metadata for a link in a group, according to the order within a field or index.
loc_id | File or group identifier specifying location of subject group. |
group_name | Name of subject group. |
index_field | Index or field which determines the order:
|
order | Order within field or index:
|
n | Link for which to retrieve information. NOTE: In C these are defined as a structure: H5L_info_t |
link_type | Specifies the link class:
|
f_corder_valid | Indicates whether the creation order data is valid for this attribute. |
corder | Is a positive integer containing the creation order of the attribute. |
cset | Indicates the character set used for the attribute’s name. |
token | If the link is a hard link, token specifies the object token that the link points to. |
val_size | If the link is a symbolic link, val_size will be the length of the link value, e.g., the length of the name of the pointed-to object with a null terminator. |
hdferr | Returns 0 if successful and -1 if it fails. |
lapl_id | Link access property list. |
See C API: H5Lget_info_by_idx2()
subroutine h5l::h5lget_info_f | ( | integer(hid_t), intent(in) | link_loc_id, |
character(len=*), intent(in) | link_name, | ||
integer, intent(out) | cset, | ||
integer, intent(out) | corder, | ||
logical, intent(out) | f_corder_valid, | ||
integer, intent(out) | link_type, | ||
type(h5o_token_t_f), intent(out), target | token, | ||
integer(size_t), intent(out) | val_size, | ||
integer, intent(out) | hdferr, | ||
integer(hid_t), intent(in), optional | lapl_id | ||
) |
Returns information about a link.
link_loc_id | File or group identifier. |
link_name | Name of the link for which information is being sought. NOTE: In C these are contained in the structure H5L_info_t |
cset | Indicates the character set used for link’s name. |
corder | Specifies the link’s creation order position. |
f_corder_valid | Indicates whether the value in corder is valid. |
link_type | Specifies the link class:
|
token | If the link is a hard link, token specifies the object token that the link points to. |
val_size | If the link is a symbolic link, val_size will be the length of the link value, e.g., the length of the name of the pointed-to object with a null terminator. |
hdferr | Returns 0 if successful and -1 if it fails. |
lapl_id | Link access property list. |
See C API: H5Lget_info2()
subroutine h5l::h5lget_name_by_idx_f | ( | integer(hid_t), intent(in) | loc_id, |
character(len=*), intent(in) | group_name, | ||
integer, intent(in) | index_field, | ||
integer, intent(in) | order, | ||
integer(hsize_t), intent(in) | n, | ||
character(len=*), intent(out) | name, | ||
integer, intent(out) | hdferr, | ||
integer(size_t), intent(out), optional | size, | ||
integer(hid_t), intent(in), optional | lapl_id | ||
) |
Retrieves name of the nth link in a group, according to the order within a specified field or index.
loc_id | File or group identifier specifying location of subject group. |
group_name | Name of subject group. |
index_field | Index or field which determines the order:
|
order | Order within field or index:
|
n | Link for which to retrieve information. |
name | Buffer in which link value is returned. |
hdferr | Returns 0 if successful and -1 if it fails. |
lapl_id | List access property list identifier. |
size | Maximum number of characters of link value to be returned. |
See C API: H5Lget_name_by_idx()
subroutine h5l::h5lis_registered_f | ( | integer, intent(in) | link_cls_id, |
logical, intent(out) | registered, | ||
integer, intent(out) | hdferr | ||
) |
Determines whether a class of user-defined links is registered.
link_cls_id | User-defined link class identifier. |
registered | .TRUE. if the link class has been registered. |
hdferr | Returns 0 if successful and -1 if it fails. |
See C API: H5Lis_registered()
subroutine h5l::h5literate_async_f | ( | integer(hid_t), intent(in) | group_id, |
integer, intent(in) | idx_type, | ||
integer, intent(in) | order, | ||
integer(hsize_t), intent(inout) | idx, | ||
type(c_funptr), intent(in) | op, | ||
type(c_ptr), intent(in) | op_data, | ||
integer, intent(out) | return_value, | ||
integer(hid_t), intent(in) | es_id, | ||
integer, intent(out) | hdferr, | ||
type(c_ptr), intent(in), optional | file, | ||
type(c_ptr), intent(in), optional | func, | ||
integer, intent(in), optional | line | ||
) |
Asynchronously iterates through links in a group.
group_id | Identifier specifying subject group. |
idx_type | Type of index which determines the order:
|
order | Order within index:
|
idx | Iteration position at which to start, or Position at which an interrupted iteration may be restarted |
op | Callback function passing data regarding the link to the calling application. |
op_data | User-defined pointer to data required by the application for its processing of the link. |
return_value | N/A |
return_value
for H5Literate_async_f(), so return_value
should not be used for determining the return state of the callback routine.es_id | Event set identifier |
hdferr | Returns 0 if successful and -1 if it fails. |
file | Pointer to filename the async subroutine is being called from, filename must be null character terminated |
func | Pointer to function name the async subroutine is being called in, func must be null character terminated |
line | Line number the async subroutine is being called at |
See C API: H5Literate_async()
subroutine h5l::h5literate_by_name_f | ( | integer(hid_t), intent(in) | loc_id, |
character(len=*), intent(in) | group_name, | ||
integer, intent(in) | index_type, | ||
integer, intent(in) | order, | ||
integer(hsize_t), intent(inout) | idx, | ||
type(c_funptr), intent(in) | op, | ||
type(c_ptr), intent(in) | op_data, | ||
integer, intent(out) | return_value, | ||
integer, intent(out) | hdferr, | ||
integer(hid_t), intent(in), optional | lapl_id | ||
) |
Iterates through links in a group.
loc_id | File or group identifier specifying location of subject group. |
group_name | Name of subject group. |
index_type | Type of index which determines the order:
|
order | Order within index:
|
idx | Iteration position at which to start, or Position at which an interrupted iteration may be restarted |
op | Callback function passing data regarding the link to the calling application. |
op_data | User-defined pointer to data required by the application for its processing of the link. |
return_value | Return context:
|
hdferr | Returns 0 if successful and -1 if it fails. |
lapl_id | Link access property list |
See C API: H5Literate_by_name2()
subroutine h5l::h5literate_f | ( | integer(hid_t), intent(in) | group_id, |
integer, intent(in) | idx_type, | ||
integer, intent(in) | order, | ||
integer(hsize_t), intent(inout) | idx, | ||
type(c_funptr), intent(in) | op, | ||
type(c_ptr), intent(in) | op_data, | ||
integer, intent(out) | return_value, | ||
integer, intent(out) | hdferr | ||
) |
$ SUBROUTINE h5lget_val_by_idx_f(loc_id, group_name, index_field, order, n, & $ f_corder_valid, corder, cset, data_size, hdferr, lapl_id) $ IMPLICIT NONE
$ SUBROUTINE h5lget_val_f(link_loc_id, link_name, size, linkval_buff, & $ hdferr, lapl_id) $ IMPLICIT NONE $ SUBROUTINE H5Lregistered_f(version, class_id, comment, create_func, & $ move_func, copy_func, trav_func, del_func, query_func, hdferr) $ IMPLICIT NONE
Iterates through links in a group.
group_id | Identifier specifying subject group. |
idx_type | Type of index which determines the order:
|
order | Order within index:
|
idx | Iteration position at which to start, or Position at which an interrupted iteration may be restarted |
op | Callback function passing data regarding the link to the calling application. |
op_data | User-defined pointer to data required by the application for its processing of the link. |
return_value | Return context:
|
hdferr | Returns 0 if successful and -1 if it fails. |
See C API: H5Literate2()
subroutine h5l::h5lmove_f | ( | integer(hid_t), intent(in) | src_loc_id, |
character(len=*), intent(in) | src_name, | ||
integer(hid_t), intent(in) | dest_loc_id, | ||
character(len=*), intent(in) | dest_name, | ||
integer, intent(out) | hdferr, | ||
integer(hid_t), intent(in), optional | lcpl_id, | ||
integer(hid_t), intent(in), optional | lapl_id | ||
) |
Renames a link within an HDF5 file.
src_loc_id | Original file or group identifier. |
src_name | Original link name. |
dest_loc_id | Destination file or group identifier. |
dest_name | NEW link name. |
hdferr | Returns 0 if successful and -1 if it fails. |
lcpl_id | Link creation property list identifier to be associated WITH the NEW link. |
lapl_id | Link access property list identifier to be associated WITH the NEW link. |
See C API: H5Lmove()
integer h5l_link_class_t_vers_f |
H5L_LINK_CLASS_T_VERS.
integer h5l_same_loc_f |
H5L_SAME_LOC.
integer h5l_type_error_f |
H5L_TYPE_ERROR.
integer h5l_type_external_f |
H5L_TYPE_EXTERNAL.
integer h5l_type_hard_f |
H5L_TYPE_HARD.
integer h5l_type_soft_f |
H5L_TYPE_SOFT.