1 /* This file is part of MED. 2 * 3 * COPYRIGHT (C) 1999 - 2019 EDF R&D, CEA/DEN 4 * MED is free software: you can redistribute it and/or modify 5 * it under the terms of the GNU Lesser General Public License as published by 6 * the Free Software Foundation, either version 3 of the License, or 7 * (at your option) any later version. 8 * 9 * MED is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 * GNU Lesser General Public License for more details. 13 * 14 * You should have received a copy of the GNU Lesser General Public License 15 * along with MED. If not, see <http://www.gnu.org/licenses/>. 16 */ 17 18 #ifndef MED_HDFI_H 19 #define MED_HDFI_H 20 #include <med.h> 21 22 #ifdef __cplusplus 23 extern "C" { 24 #endif 25 26 27 /* FONCTIONS INTERFACE MED/HDF */ 28 29 30 /* Gestion des attributs HDF */ 31 extern MEDC_EXPORT 32 med_idt _MEDattrOuvrir(med_idt pid,char * nom); 33 34 extern MEDC_EXPORT 35 med_err _MEDattributeExist(const med_idt gid, 36 const char * const datagroupname, 37 const char * const attributename, 38 med_bool * const attributeexist ); 39 extern MEDC_EXPORT 40 med_err _MEDattrFermer(med_idt id); 41 42 extern MEDC_EXPORT 43 med_err _MEDattrNumEcrire(med_idt pere,med_field_type type,char *nom,unsigned char *val); 44 45 #define _MEDattributeIntWr(w,x,y) _MEDattributeNumWr(w,x, MED_INTERNAL_INT, (unsigned char *) y) 46 #define _MEDattrFloatEcrire(w,x,y) _MEDattrNumEcrire(w,MED_FLOAT64,x,(unsigned char *) y) 47 48 extern MEDC_EXPORT 49 med_err _MEDattributeNumWr(med_idt pid, 50 const char * const attname, 51 const med_internal_type type, 52 const unsigned char * const val); 53 54 extern MEDC_EXPORT 55 med_err _MEDattributeNumWrByName(med_idt pid, 56 const char * const path , 57 const char * const attname, 58 const med_internal_type type, 59 const unsigned char * const val); 60 61 extern MEDC_EXPORT 62 med_err _MEDattrNumLire(med_idt pere,med_field_type type,const char * const nom,unsigned char *val); 63 64 #define _MEDattrEntierLire(x,y,z) _MEDattrNumLire(x,MED_INT ,y,(unsigned char*)z) 65 #define _MEDattrFloatLire(x,y,z) _MEDattrNumLire(x,MED_FLOAT64,y,(unsigned char*)z) 66 67 extern MEDC_EXPORT 68 med_err _MEDattributeNumRdByName(med_idt pid, 69 const char * const path , 70 const char * const attname, 71 const med_internal_type type, 72 unsigned char * const val); 73 74 extern MEDC_EXPORT 75 med_err _MEDattrStringEcrire(med_idt pere,const char * const nom,int longueur,const char * const val); 76 77 extern MEDC_EXPORT 78 med_err _MEDattributeStringWrByName(med_idt pid, 79 const char * const path, 80 const char * const attname, 81 const med_size attsize, 82 const char * const val); 83 extern MEDC_EXPORT 84 med_err _MEDattributeStringWr(med_idt pid, 85 const char * const attname, 86 const med_size attsize, 87 const char * const val); 88 extern MEDC_EXPORT 89 90 med_err _MEDattrStringLire(med_idt pere,char *nom,int longueur,char *val); 91 92 extern MEDC_EXPORT 93 med_err _MEDattributeStringRdByName(med_idt pid, 94 const char * const path , 95 const char * const attname, 96 const med_size attsize, 97 char * const val); 98 99 100 /* Gestion des datagroups HDF */ 101 extern MEDC_EXPORT 102 med_idt _MEDdatagroupCreer(med_idt pid, const char * const nom); 103 104 extern MEDC_EXPORT 105 med_idt _MEDdatagroupCrOrderCr(const med_idt pid, const char * const name); 106 107 extern MEDC_EXPORT 108 med_idt _MEDdatagroupOuvrir(med_idt pid, const char * const nom); 109 110 extern MEDC_EXPORT 111 med_idt _MEDdatagroupOpen(const med_idt pid, const char * const name); 112 113 extern MEDC_EXPORT 114 med_err _MEDdatagroupFermer(med_idt id); 115 116 extern MEDC_EXPORT 117 med_err _MEDdatagroupLienCreer(med_idt id,const char *nom, const char *nom_lien); 118 119 extern MEDC_EXPORT 120 med_err _MEDdatagroupLienSupprimer(med_idt id,const char *nom_lien); 121 122 123 /* Gestion des datasets HDF */ 124 125 extern MEDC_EXPORT 126 med_idt _MEDdatasetOuvrir(med_idt pid,char *nom); 127 128 extern MEDC_EXPORT 129 med_err _MEDdatasetFermer(med_idt id); 130 131 extern MEDC_EXPORT 132 med_err _MEDdatasetWr(const med_idt id, 133 const char * const datasetname, 134 const med_internal_type datatype, 135 const med_filter* const filter, 136 const void * const value); 137 extern MEDC_EXPORT 138 med_err _MEDdatasetRd(const med_idt id, 139 const char * const datasetname, 140 const med_internal_type datatype, 141 const med_filter* const filter, 142 unsigned char * const value); 143 144 /* Gestion des fichiers HDF */ 145 #ifdef MED_HAVE_MPI 146 147 extern MEDC_EXPORT 148 med_idt _MEDparFileOpen(const char * const filename,const med_access_mode accessmode, 149 const MPI_Comm comm, const MPI_Info info); 150 151 extern MEDC_EXPORT 152 med_idt _MEDparFileCreate(const char * const filename, const med_access_mode accessmode, 153 const MPI_Comm comm, const MPI_Info info); 154 #endif 155 156 extern MEDC_EXPORT 157 med_idt _MEDfileOpen(const char * const filename,const med_access_mode accessmode); 158 159 160 extern MEDC_EXPORT 161 med_int _MEDfileName(med_idt id, char * const filename, const med_int filenamesize); 162 163 extern MEDC_EXPORT 164 med_idt _MEDfileCreate(const char * const filename, const med_access_mode accessmode, const med_int major, const med_int minor, const med_int release); 165 166 extern MEDC_EXPORT 167 med_idt _MEDmemFileOpen(const char * const filename, med_memfile * const memfile, const med_bool filesync, const med_access_mode accessmode); 168 169 extern MEDC_EXPORT 170 med_err _MEDfichierFermer(med_idt fid); 171 172 extern MEDC_EXPORT 173 med_err _MEDfichierMonter(med_idt pid, const char *nom, med_idt fid); 174 175 extern MEDC_EXPORT 176 med_err _MEDfichierDemonter(med_idt pid, const char *nom); 177 178 extern MEDC_EXPORT 179 med_err _MEDfichierNo(med_idt id, unsigned long * fileno); 180 181 /* Filtres */ 182 extern MEDC_EXPORT 183 med_err _MEDfilterEntityFullIGlobalCr(const med_idt fid, 184 const med_int nentity, 185 const med_int nvaluesperentity, 186 const med_int nconstituentpervalue, 187 const med_int constituentselect, 188 const med_storage_mode storagemode, 189 const char * const profilename, 190 const med_int filterarraysize, 191 const med_int* const filterarray, 192 med_filter* const filter); 193 extern MEDC_EXPORT 194 med_err _MEDfilterEntityFullICompactCr(const med_idt fid, 195 const med_int nentity, 196 const med_int nvaluesperentity, 197 const med_int nconstituentpervalue, 198 const med_int constituentselect, 199 const med_storage_mode storagemode, 200 const char * const profilename, 201 const med_int filterarraysize, 202 const med_int* const filterarray, 203 med_filter* const filter); 204 extern MEDC_EXPORT 205 med_err _MEDfilterEntityNoIGlobalCr(const med_idt fid, 206 const med_int nentity, 207 const med_int nvaluesperentity, 208 const med_int nconstituentpervalue, 209 const med_int constituentselect, 210 const med_storage_mode storagemode, 211 const char * const profilename, 212 const med_int filterarraysize, 213 const med_int* const filterarray, 214 med_filter* const filter); 215 216 extern MEDC_EXPORT 217 med_err _MEDfilterEntityNoICompactCr(const med_idt fid, 218 const med_int nentity, 219 const med_int nvaluesperentity, 220 const med_int nconstituentpervalue, 221 const med_int constituentselect, 222 const med_storage_mode storagemode, 223 const char * const profilename, 224 const med_int filterarraysize, 225 const med_int* const filterarray, 226 med_filter* const filter); 227 228 /* extern MEDC_EXPORT */ 229 /* med_err _MEDselectAllEntities(const med_idt fid, */ 230 /* const med_int nentity, */ 231 /* const med_int nvaluesperentity, */ 232 /* const med_int nconstituentpervalue, */ 233 /* const med_int constituentselect, */ 234 /* med_filter* const filter); */ 235 236 237 extern MEDC_EXPORT 238 med_err _MEDselectAllEntitiesFullI(const med_idt fid, 239 const med_int nentity, 240 const med_int nvaluesperentity, 241 const med_int nconstituentpervalue, 242 const med_int constituentselect, 243 med_filter* const filter); 244 245 extern MEDC_EXPORT 246 med_err _MEDselectAllEntitiesNoI(const med_idt fid, 247 const med_int nentity, 248 const med_int nvaluesperentity, 249 const med_int nconstituentpervalue, 250 const med_int constituentselect, 251 med_filter* const filter); 252 253 extern MEDC_EXPORT 254 med_err _MEDfilterBlockOfEntityFullICompactCr(const med_idt fid, 255 const med_int nentity, 256 const med_int nvaluesperentity, 257 const med_int nconstituentpervalue, 258 const med_int constituentselect, 259 const med_storage_mode storagemode, 260 const char * const profilename, 261 const med_size start, 262 const med_size stride, 263 const med_size count, 264 const med_size blocksize, 265 const med_size lastblocksize, 266 med_filter* const filter); 267 268 extern MEDC_EXPORT 269 med_err _MEDfilterBlockOfEntityFullIGlobalCr(const med_idt fid, 270 const med_int nentity, 271 const med_int nvaluesperentity, 272 const med_int nconstituentpervalue, 273 const med_int constituentselect, 274 const med_storage_mode storagemode, 275 const char * const profilename, 276 const med_size start, 277 const med_size stride, 278 const med_size count, 279 const med_size blocksize, 280 const med_size lastblocksize, 281 med_filter* const filter); 282 extern MEDC_EXPORT 283 med_err _MEDfilterBlockOfEntityNoIGlobalCr(const med_idt fid, 284 const med_int nentity, 285 const med_int nvaluesperentity, 286 const med_int nconstituentpervalue, 287 const med_int constituentselect, 288 const med_storage_mode storagemode, 289 const char * const profilename, 290 const med_size start, 291 const med_size stride, 292 const med_size count, 293 const med_size blocksize, 294 const med_size lastblocksize, 295 med_filter* const filter); 296 extern MEDC_EXPORT 297 med_err _MEDfilterBlockOfEntityNoICompactCr(const med_idt fid, 298 const med_int nentity, 299 const med_int nvaluesperentity, 300 const med_int nconstituentpervalue, 301 const med_int constituentselect, 302 const med_storage_mode storagemode, 303 const char * const profilename, 304 const med_size start, 305 const med_size stride, 306 const med_size count, 307 const med_size blocksize, 308 const med_size lastblocksize, 309 med_filter* const filter); 310 311 312 /* Divers */ 313 314 extern MEDC_EXPORT 315 med_err _MEDnObjects(const med_idt fid,const char * const path,med_size *n); 316 317 extern MEDC_EXPORT 318 med_err _MEDobjectGetName(const med_idt fid,const char * const path,const med_size ind,char *name); 319 320 extern MEDC_EXPORT 321 med_err 322 _MEDobjectCrOrderGetName(const med_idt fid,const char * const path,const med_size ind,char *name); 323 324 extern MEDC_EXPORT 325 med_err 326 __MEDobjectGetName(const med_idt fid, const char * const path, const med_size ind, char *name, 327 const H5_index_t index_type, const H5_iter_order_t order ); 328 329 330 typedef struct { 331 char * srcpath; 332 char * dstpath; 333 med_idt gid1; 334 med_idt gid2; 335 } visitordatas; 336 337 typedef struct { 338 char * attname; 339 char * attval; 340 char * attvalprec; 341 med_int attsize; 342 } med_string_itdatas; 343 344 345 extern MEDC_EXPORT 346 void * _MEDcheckAttributeStringInit( med_string_itdatas * const itdatas, const char * const attname, med_int attsize); 347 extern MEDC_EXPORT 348 med_err _MEDcheckAttributeStringFunc(med_idt id,const char *lname, const H5L_info_t *linfo, med_string_itdatas *data); 349 extern MEDC_EXPORT 350 void _MEDcheckAttributeStringFin( med_string_itdatas * const itdatas); 351 352 extern MEDC_EXPORT 353 med_err _MEDchecknSublinkFunc(med_idt id,const char *lname, const H5L_info_t *linfo, med_bool *data); 354 355 #define MED_CHECK_ATTRIBUTE_FUNC(_check_med_type_) _MEDcheckAttributeFunc##_check_med_type_ 356 #define MED_CHECK_ATTRIBUTE_INIT(_check_med_type_,_check_med_itdata_,_check_med_attname_,_check_med_attsize_) _MEDcheckAttributeInit##_check_med_type_ (_check_med_itdata_,_check_med_attname_,_check_med_attsize_) 357 358 359 extern MEDC_EXPORT 360 med_err _MEDcopyName(med_idt id,const char *lname, const H5L_info_t *linfo, void *data); 361 362 extern MEDC_EXPORT 363 med_err _MEDlinkobjs(med_idt id,const char *lname, const H5L_info_t *linfo, visitordatas *data); 364 365 extern MEDC_EXPORT 366 med_err _MEDsoftlinkDel(const med_idt id, const char * const softlinkname, 367 med_bool linkmustexist); 368 extern MEDC_EXPORT 369 med_err _MEDisasoftlink(const med_idt id, 370 const char * const linkname, 371 med_bool linkmustexist, 372 med_bool * const isasoftlink 373 ); 374 extern MEDC_EXPORT 375 med_err _MEDgetDatasetChgt(const med_idt gid, 376 const med_data_type meddatatype, 377 const med_connectivity_mode cmode, 378 med_bool * const isasoftlink, 379 med_bool * const chgt ); 380 381 extern MEDC_EXPORT 382 med_err _MEDdatasetExistByMedtype(const med_idt gid, 383 const med_data_type meddatatype, 384 const med_connectivity_mode cmode, 385 med_bool * const datasetexist, 386 med_bool * const isasoftlink ); 387 388 extern MEDC_EXPORT 389 med_err _MEDdatagroupExist(const med_idt gid, 390 const char * const datagroupname, 391 med_bool * const datagroupexist, 392 med_bool * const isasoftlink ); 393 extern MEDC_EXPORT 394 med_err _MEDdatasetExist(const med_idt gid, 395 const char * const datasetname, 396 med_bool * const datasetexist, 397 med_bool * const isasoftlink ); 398 399 typedef herr_t (*medvisitorfunc)( hid_t g_id, const char *name, const H5L_info_t *info, void *op_data); 400 typedef medvisitorfunc mediteratorfunc; 401 402 extern MEDC_EXPORT 403 med_err _MEDvisit(const med_idt fid, const char * const srcpath, const char * const dstpath, 404 medvisitorfunc); 405 extern MEDC_EXPORT 406 med_err _MEDiterate(const med_idt fid, herr_t (*func)(), void * itdatas ); 407 408 extern MEDC_EXPORT 409 med_err 410 _MEDgetComputationStepName(const med_sorting_type sortingtype, const med_int numdt, 411 const med_int numit, char * const datagroupname); 412 413 extern MEDC_EXPORT 414 void _MEDmodeErreurVerrouiller(void); 415 416 extern MEDC_EXPORT 417 void _MEDobjetsOuverts(med_idt fid); 418 #ifdef __cplusplus 419 } 420 #endif 421 422 #endif /* MED_HDFI_H */ 423