MEDnAttribut.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
00023 #include <string.h>
00024 #include <stdlib.h>
00025
00026 med_int
00027 MEDnAttribut(med_idt fid,char *maa, int indice)
00028 {
00029 med_idt datagroup,famid;
00030 med_err ret;
00031 char chemin[MED_TAILLE_MAA+MED_TAILLE_FAS+MED_TAILLE_FAS_ENTITE+2*MED_TAILLE_NOM+1];
00032 char stockage[MED_TAILLE_MAA+MED_TAILLE_FAS+MED_TAILLE_FAS_ENTITE+2*MED_TAILLE_NOM+1];
00033 med_int n;
00034 int n_tmp;
00035 int num;
00036 char famille[MED_TAILLE_NOM+1];
00037 int nfamnoe,nfammai;
00038
00039
00040
00041
00042 _MEDmodeErreurVerrouiller();
00043 if (MEDcheckVersion(fid) < 0) return -1;
00044
00045
00046 strcpy(chemin,MED_MAA);
00047 strcat(chemin,maa);
00048 strcat(chemin,MED_FAS);
00049
00050 num = indice - 1;
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061 strcpy(stockage,chemin);
00062 strcat(stockage,MED_FAS_ELEME_NOM);
00063 nfammai = 0;
00064 n_tmp = 0;
00065 if ((ret =_MEDnObjets(fid,stockage,&n_tmp)) == 0)
00066 nfammai = (med_int ) n_tmp;
00067 strcat(stockage,"/");
00068
00069
00070 if (num == nfammai)
00071 return 0;
00072
00073 if (num > nfammai) {
00074
00075 strcpy(stockage,chemin);
00076 strcat(stockage,MED_FAS_NOEUD_NOM);
00077 strcat(stockage,"/");
00078 num = num - nfammai - 1;
00079 }
00080
00081
00082
00083
00084
00085 if ((ret = _MEDobjetIdentifier(fid,stockage,num,
00086 famille)) < 0)
00087 return -1;
00088 strcat(stockage,famille);
00089
00090 if ((famid = _MEDdatagroupOuvrir(fid,stockage)) < 0)
00091 return -1;
00092
00093 if ((datagroup = _MEDdatagroupOuvrir(famid,MED_NOM_ATT)) < 0)
00094 n = 0;
00095 else
00096 {
00097 if ((ret = _MEDattrEntierLire(datagroup,MED_NOM_NBR,&n)) < 0)
00098 return -1;
00099 if ((ret = _MEDdatagroupFermer(datagroup)) < 0)
00100 return -1;
00101 }
00102
00103 if ((ret = _MEDdatagroupFermer(famid)) < 0)
00104 return -1;
00105
00106 return (med_int) n;
00107
00108 }