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 
19 
20 #include <med.h>
21 #include <med_config.h>
22 #include <med_outils.h>
23 #include <hdf5.h>
24 
25 /*
26  * - Nom de la fonction : _MEDdatagroupCreer
27  * - Description : creation et ouverture d'un Datagroup HDF
28  * - Parametres :
29  *     - pid     (IN)    : l'ID de l'objet pere
30  *     - nom     (IN)    : le nom de l'objet fils
31  * - Resultat : l'ID du fils en cas de succes, -1 sinon
32  */
33 med_idt
_MEDdatagroupCreer(med_idt pid,const char * const nom)34 _MEDdatagroupCreer(med_idt pid, const char * const nom)
35 {
36   med_idt id;
37   med_err ret=0;
38   med_access_mode MED_ACCESS_MODE;
39 
40   if ( (MED_ACCESS_MODE = _MEDmodeAcces(pid) ) == MED_ACC_UNDEF ) {
41     MESSAGE("Impossible de déterminer le mode d'acces au fichier.");
42     return -1;
43   }
44 
45   if ( MED_ACCESS_MODE == MED_ACC_RDONLY) {
46     MESSAGE("Impossible de créer un datagroup en mode MED_ACC_RDONLY.");
47     return -1;
48   };
49 
50 
51   id = _MEDdatagroupOuvrir(pid,nom);
52   if (id > 0)
53     if (MED_ACCESS_MODE == MED_ACC_RDEXT) {
54       MESSAGE("Création d'un datagroup existant impossible en mode MED_ACC_RDEXT.");
55       return -1;
56     };
57   /* sinon on le crée */
58   if (id <= 0)
59     if ((id = H5Gcreate(pid,nom,0)) < 0) {
60       MESSAGE("Impossible de créer le datagroup : ");
61       SSCRUTE(nom);
62       return -1;
63     }
64 
65   return id;
66 }
67