# _MEDnFamily30.c

Aller à la documentation de ce fichier.

    00001 /*  This file is part of MED.
    00002  *
    00003  *  COPYRIGHT (C) 1999 - 2011  EDF R&D, CEA/DEN
    00004  *  MED is free software: you can redistribute it and/or modify
    00005  *  it under the terms of the GNU Lesser General Public License as published by
    00006  *  the Free Software Foundation, either version 3 of the License, or
    00007  *  (at your option) any later version.
    00008  *
    00009  *  MED is distributed in the hope that it will be useful,
    00010  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
    00011  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    00012  *  GNU Lesser General Public License for more details.
    00013  *
    00014  *  You should have received a copy of the GNU Lesser General Public License
    00015  *  along with MED.  If not, see <http://www.gnu.org/licenses/>.
    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 void _MEDnFamily30(int dummy, ...)
    00027 {
    00028
    00029
    00030   med_int       _ret=-1;
    00031   char          _path[MED_TAILLE_FAS+MED_NAME_SIZE+MED_TAILLE_FAS_ENTITE+MED_NAME_SIZE+1]=MED_FAS;
    00032   int           _pathreflen=0;
    00033   med_int       _n=0;
    00034   med_size      _tmpn=0;
    00035
    00036
    00037   MED_VARGS_DECL(const, med_idt      , , fid      );
    00038   MED_VARGS_DECL(const, char * , const , meshname );
    00039   MED_VARGS_DECL(, med_int *          ,, fret     );
    00040
    00041   va_list params;
    00042   va_start(params,dummy);
    00043
    00044   MED_VARGS_DEF(const, med_idt      , , fid      );
    00045   MED_VARGS_DEF(const, char * , const , meshname );
    00046   MED_VARGS_DEF(, med_int *          ,, fret     );
    00047
    00048   /*
    00049    * On inhibe le gestionnaire d'erreur HDF
    00050    */
    00051   _MEDmodeErreurVerrouiller();
    00052
    00053   strcat(_path,meshname);
    00054   _pathreflen=strlen(_path);
    00055
    00056 /*   SSCRUTE(_path); */
    00057   if ( (_ret=_MEDnObjects(fid,_path,&_tmpn)) < 0)
    00058     if ( _ret == (MED_ERR_COUNT + MED_ERR_DATAGROUP) ) {
    00059       MED_ERR_(_ret,MED_ERR_COUNT,MED_ERR_DATAGROUP,_path);
    00060       goto ERROR;
    00061     }
    00062   _n = (med_int ) _tmpn;
    00063 /*   ISCRUTE(_n); */
    00064
    00065   /* Comptage des familles de mailles/faces/aretes */
    00066   strcat(_path,MED_FAS_ELEME);
    00067 /*   SSCRUTE(_path); */
    00068   if ( (_ret=_MEDnObjects(fid,_path,&_tmpn)) < 0 ) {
    00069     if ( _ret == (MED_ERR_COUNT + MED_ERR_DATAGROUP) ) {
    00070       MED_ERR_(_ret,MED_ERR_COUNT,MED_ERR_DATAGROUP,_path);
    00071       goto ERROR;
    00072     }
    00073   } else  {
    00074 /*     ISCRUTE(_ret); */
    00075     _n --;  _n += (med_int ) _tmpn;
    00076   }
    00077 /*   ISCRUTE(_ret); */
    00078 /*   ISCRUTE(_n); */
    00079
    00080   /* Comptage des familles de noeuds */
    00081   strncpy(&_path[_pathreflen],MED_FAS_NOEUD,MED_TAILLE_FAS_ENTITE+1);
    00082 /*   SSCRUTE(_path); */
    00083   if ( (_ret=_MEDnObjects(fid,_path,&_tmpn)) < 0 ) {
    00084     if ( _ret == (MED_ERR_COUNT + MED_ERR_DATAGROUP) ) {
    00085       MED_ERR_(_ret,MED_ERR_COUNT,MED_ERR_DATAGROUP,_path);
    00086       goto ERROR;
    00087     }
    00088   } else  {
    00089     _n --;  _n += (med_int ) _tmpn;
    00090   }
    00091 /*   ISCRUTE(_n); */
    00092
    00093   _ret =  _n;
    00094  ERROR:
    00095   va_end(params);
    00096   *fret = _ret;
    00097
    00098   return;
    00099 }
    00100