// create a complex float attribute herr_t create_complex_attribute(hid_t loc_id, const char* path, const char* name, float_complex value) { hid_t space_id, attr_id; hid_t real_type_id; hsize_t *dims; herr_t status; float * buf; real_type_id = create_real_type_id(); space_id = H5Screate_simple(1,dims,NULL); attr_id = H5Acreate_by_name(loc_id,path,name,real_type_id,space_id,H5P_DEFAULT,H5P_DEFAULT, H5P_DEFAULT); buf[0] = crealf(value); buf[1] = cimagf(value); status = H5Awrite(attr_id,real_type_id,buf); return status; }
/* * Class: hdf_hdf5lib_H5 * Method: _H5Acreate_by_name * Signature: (JLjava/lang/String;Ljava/lang/String;JJJJJ)J */ JNIEXPORT jlong JNICALL Java_hdf_hdf5lib_H5__1H5Acreate_1by_1name (JNIEnv *env, jclass clss, jlong loc_id, jstring obj_name, jstring attr_name, jlong type_id, jlong space_id, jlong acpl_id, jlong aapl_id, jlong lapl_id) { hid_t retVal = -1; const char *aName; const char *attrName; PIN_JAVA_STRING_TWO(obj_name, aName, attr_name, attrName); if (aName != NULL && attrName != NULL) { retVal = H5Acreate_by_name((hid_t)loc_id, aName, attrName, (hid_t)type_id, (hid_t)space_id, (hid_t)acpl_id, (hid_t)aapl_id, (hid_t)lapl_id); UNPIN_JAVA_STRING_TWO(obj_name, aName, attr_name, attrName); if (retVal < 0) h5libraryError(env); } return (jlong)retVal; } /* end Java_hdf_hdf5lib_H5__1H5Acreate_1by_1name */
med_err _MEDattributeStringWrByName(med_idt pid, const char * const path, const char * const attname, const med_size attsize, const char * const val) { med_access_mode MED_ACCESS_MODE; med_idt _attid=0,aid=0; med_err _ret=-1; int type_hdf=0; med_bool _attmustbecreated= MED_FALSE; hsize_t _attsize=0; med_size _valsize=0; if ( (MED_ACCESS_MODE = _MEDmodeAcces(pid) ) == MED_ACC_UNDEF ) { MED_ERR_(_ret,MED_ERR_INVALID,MED_ERR_ACCESSMODE, "MED_ACC_UNDEF" ); SSCRUTE(attname); SSCRUTE(path);goto ERROR; } _valsize=strlen(val); if (_valsize > attsize) { MED_ERR_(_ret,MED_ERR_INVALID,MED_ERR_ATTRIBUTE, attname ); ISCRUTE_size(_valsize);ISCRUTE_size(attsize);goto ERROR; } if ((aid = H5Screate(H5S_SCALAR)) < 0){ MED_ERR_(_ret,MED_ERR_CREATE,MED_ERR_DATASPACE, attname ); ISCRUTE_id(aid); } if ( (type_hdf = H5Tcopy(H5T_C_S1)) < 0) { MED_ERR_(_ret,MED_ERR_CREATE,MED_ERR_HDFTYPE, MED_ERR_NAME_MSG ); SSCRUTE("H5T_C_S1"); goto ERROR; } if ( H5Tset_size(type_hdf,_valsize+1) < 0) { MED_ERR_(_ret,MED_ERR_CREATE,MED_ERR_HDFTYPE, MED_ERR_NAME_MSG ); SSCRUTE("H5T_C_S1"); goto ERROR; } if ( (_attid=H5Aopen_by_name( pid, path, attname, H5P_DEFAULT, H5P_DEFAULT )) >= 0 ) if ( MED_ACCESS_MODE == MED_ACC_RDEXT ) { MED_ERR_(_ret,MED_ERR_INVALID,MED_ERR_ACCESSMODE, "MED_ACC_RDEXT" ); SSCRUTE(attname); SSCRUTE(path);goto ERROR; } if ( _attid > 0 ) { if ( (_attsize=H5Aget_storage_size(_attid) ) < 0 ) goto ERROR; if ( (_valsize+1) > _attsize ) { if (H5Aclose(_attid) < 0) { MED_ERR_(_ret,MED_ERR_CLOSE,MED_ERR_ATTRIBUTE,""); ISCRUTE_id(_attid); goto ERROR; } if ( H5Adelete_by_name(pid,path,attname,H5P_DEFAULT) < 0 ) goto ERROR; _attmustbecreated=MED_TRUE; } } if ( (_attid < 0) || _attmustbecreated ) if ( (_attid=H5Acreate_by_name( pid, path, attname, type_hdf, aid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT )) < 0 ) { MED_ERR_(_ret,MED_ERR_CREATE,MED_ERR_ATTRIBUTE, attname ); SSCRUTE(path);goto ERROR; } if ( H5Awrite(_attid,type_hdf,val) < 0) { MED_ERR_(_ret,MED_ERR_WRITE,MED_ERR_ATTRIBUTE, attname ); SSCRUTE(path);goto ERROR; } _ret=0; ERROR: if (type_hdf > 0 ) if ( H5Tclose(type_hdf) < 0) { MED_ERR_(_ret,MED_ERR_CLOSE,MED_ERR_HDFTYPE, MED_ERR_ID_MSG ); ISCRUTE_int(type_hdf); } if (aid > 0 ) if ( H5Sclose(aid) < 0) { MED_ERR_(_ret,MED_ERR_CLOSE,MED_ERR_DATASPACE, MED_ERR_ID_MSG ); ISCRUTE_id(aid); } if (_attid >0) if ( H5Aclose(_attid) < 0) { MED_ERR_(_ret,MED_ERR_CLOSE,MED_ERR_ATTRIBUTE, MED_ERR_ID_MSG ); ISCRUTE_id(_attid); } return _ret; }