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(
00036 const med_int fid,
00037 const char* const fieldname
00038 )
00039 {
00040
00041 med_int _ret=-1,_err=-1;
00042 med_idt _fieldinterpid=0,_fieldid=0;
00043 char _interppath[MED_TAILLE_CHA+MED_NAME_SIZE+MED_TAILLE_INTERP+1]=MED_CHA;
00044 char _path[MED_TAILLE_CHA_INTERP+MED_NAME_SIZE+1]=MED_CHA_INTERP;
00045 med_size _tmpn=0;
00046
00047
00048
00049
00050 _MEDmodeErreurVerrouiller();
00051
00052
00053
00054
00055
00056 if ((_fieldinterpid = _MEDdatagroupOpen(fid,MED_CHA_INTERP)) < 0)
00057 goto SORTIE;
00058
00059 strcat(_interppath,fieldname);
00060
00061
00062
00063
00064 if ((_fieldid = _MEDdatagroupOuvrir(_fieldinterpid,fieldname)) < 0)
00065 goto SORTIE;
00066
00067
00068
00069
00070 if ((_err=_MEDnObjects(_fieldinterpid,".",&_tmpn)) <0)
00071 if ( _err == (MED_ERR_COUNT + MED_ERR_DATAGROUP) ) {
00072 MED_ERR_(_ret,MED_ERR_COUNT,MED_ERR_INTERP,_interppath);
00073 goto ERROR;
00074 }
00075
00076 SORTIE:
00077 _ret = (med_int) _tmpn;
00078
00079 ERROR:
00080
00081 if (_fieldid>0) if (_MEDdatagroupFermer(_fieldid) < 0) {
00082 MED_ERR_(_ret,MED_ERR_CLOSE,MED_ERR_DATAGROUP,fieldname);
00083 SSCRUTE(_path);ISCRUTE_id(_fieldid);
00084 }
00085
00086 if (_fieldinterpid>0) if (_MEDdatagroupFermer(_fieldinterpid) < 0) {
00087 MED_ERR_(_ret,MED_ERR_CLOSE,MED_ERR_DATAGROUP,MED_CHA_INTERP);
00088 SSCRUTE(_path); ISCRUTE_id(_fieldinterpid);
00089 }
00090
00091 return _ret;
00092 }
00093
00094
00095