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