MEDfieldnInterp.c
Aller à la documentation de ce fichier.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #include <med.h>
00020 #include <med_config.h>
00021 #include <med_outils.h>
00022 #include <string.h>
00023 #include <hdf5.h>
00024
00034 med_int
00035 MEDfieldnInterp(const med_idt fid,
00036 const char* const fieldname
00037 )
00038 {
00039
00040 med_int _ret=-1,_err=-1;
00041 med_idt _fieldinterpid=0,_fieldid=0;
00042 char _interppath[MED_TAILLE_CHA+MED_NAME_SIZE+MED_TAILLE_INTERP+1]=MED_CHA;
00043 char _path[MED_TAILLE_CHA_INTERP+MED_NAME_SIZE+1]=MED_CHA_INTERP;
00044 med_size _tmpn=0;
00045
00046
00047
00048
00049 _MEDmodeErreurVerrouiller();
00050
00051
00052
00053
00054
00055 if ((_fieldinterpid = _MEDdatagroupOpen(fid,MED_CHA_INTERP)) < 0)
00056 goto SORTIE;
00057
00058 strcat(_interppath,fieldname);
00059
00060
00061
00062
00063 if ((_fieldid = _MEDdatagroupOuvrir(_fieldinterpid,fieldname)) < 0)
00064 goto SORTIE;
00065
00066
00067
00068
00069 if ((_err=_MEDnObjects(_fieldinterpid,".",&_tmpn)) <0)
00070 if ( _err == (MED_ERR_COUNT + MED_ERR_DATAGROUP) ) {
00071 MED_ERR_(_ret,MED_ERR_COUNT,MED_ERR_INTERP,_interppath);
00072 goto ERROR;
00073 }
00074
00075 SORTIE:
00076 _ret = (med_int) _tmpn;
00077
00078 ERROR:
00079
00080 if (_fieldid>0) if (_MEDdatagroupFermer(_fieldid) < 0) {
00081 MED_ERR_(_ret,MED_ERR_CLOSE,MED_ERR_DATAGROUP,fieldname);
00082 SSCRUTE(_path);ISCRUTE_id(_fieldid);
00083 }
00084
00085 if (_fieldinterpid>0) if (_MEDdatagroupFermer(_fieldinterpid) < 0) {
00086 MED_ERR_(_ret,MED_ERR_CLOSE,MED_ERR_DATAGROUP,MED_CHA_INTERP);
00087 SSCRUTE(_path); ISCRUTE_id(_fieldinterpid);
00088 }
00089
00090 return _ret;
00091 }
00092
00093
00094