1
/*============================================================================
2
* Définitions des fonctions de base
3
* associées à la structure `ecs_famille_t' décrivant une famille
4
*============================================================================*/
7
This file is part of Code_Saturne, a general-purpose CFD tool.
9
Copyright (C) 1998-2011 EDF S.A.
11
This program is free software; you can redistribute it and/or modify it under
12
the terms of the GNU General Public License as published by the Free Software
13
Foundation; either version 2 of the License, or (at your option) any later
16
This program is distributed in the hope that it will be useful, but WITHOUT
17
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
18
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
21
You should have received a copy of the GNU General Public License along with
22
this program; if not, write to the Free Software Foundation, Inc., 51 Franklin
23
Street, Fifth Floor, Boston, MA 02110-1301, USA.
26
/*----------------------------------------------------------------------------*/
29
/*============================================================================
31
*============================================================================*/
33
/*----------------------------------------------------------------------------
34
* Fichiers `include' librairie standard C
35
*----------------------------------------------------------------------------*/
38
#include <string.h> /* memcmp() */
41
/*----------------------------------------------------------------------------
42
* Fichiers `include' système
43
*----------------------------------------------------------------------------*/
46
/*----------------------------------------------------------------------------
47
* Fichiers `include' visibles du paquetage global "Utilitaire"
48
*----------------------------------------------------------------------------*/
56
/*----------------------------------------------------------------------------
57
* Fichiers `include' visibles des paquetages visibles
58
*----------------------------------------------------------------------------*/
62
/*----------------------------------------------------------------------------
63
* Fichiers `include' visibles du paquetage courant
64
*----------------------------------------------------------------------------*/
66
#include "ecs_descr_chaine.h"
69
/*----------------------------------------------------------------------------
70
* Fichier `include' du paquetage courant associe au fichier courant
71
*----------------------------------------------------------------------------*/
73
#include "ecs_famille.h"
76
/*----------------------------------------------------------------------------
77
* Fichiers `include' prives du paquetage courant
78
*----------------------------------------------------------------------------*/
80
#include "ecs_famille_priv.h"
83
/*============================================================================
85
*============================================================================*/
88
/*============================================================================
90
*============================================================================*/
92
/*----------------------------------------------------------------------------
93
* Fonction de création d'une structure de famille `ecs_famille_t'
94
*----------------------------------------------------------------------------*/
97
ecs_famille__cree(int num,
98
ecs_descr_t *descr_tete)
100
ecs_famille_t * fam_loc;
102
/*xxxxxxxxxxxxxxxxxxxxxxxxxxx Instructions xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx*/
104
/* Allocation et initialisation de la structure */
105
/*==============================================*/
107
/* Allocation de la structure globale de la famille */
108
/*--------------------------------------------------*/
110
ECS_MALLOC(fam_loc, 1, ecs_famille_t);
112
/* Initialisation de la structure */
113
/*--------------------------------*/
116
fam_loc->descr = descr_tete;
117
fam_loc->l_famille_sui = NULL;
122
/*----------------------------------------------------------------------------
123
* Fonction libérant la structure `ecs_famille_t' donnée en argument.
124
* Elle renvoie un pointeur NULL
125
*----------------------------------------------------------------------------*/
128
ecs_famille__detruit(ecs_famille_t *this_fam)
130
/*xxxxxxxxxxxxxxxxxxxxxxxxxxx Instructions xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx*/
132
assert(this_fam != NULL);
134
ecs_descr_chaine__detruit(&this_fam->descr);
138
assert(this_fam == NULL);
143
/*----------------------------------------------------------------------------
144
* Fonction imprimant le contenu d'une structure `ecs_famille_t' donnée
145
* sur le flux décrit par la structure `ecs_file_t'
146
*----------------------------------------------------------------------------*/
149
ecs_famille__imprime(const ecs_famille_t *this_fam,
153
#define ECS_FCT_IMP_FAMILLE_NUM "numero"
154
#define ECS_FCT_IMP_FAMILLE_DESCR "descr"
155
#define ECS_FCT_IMP_FAMILLE_L_FAMILLE "l_famille_sui"
157
/*xxxxxxxxxxxxxxxxxxxxxxxxxxx Instructions xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx*/
159
assert(this_fam != NULL);
163
/* Impression du numero de famille */
165
ecs_fic__imprime_val(fic_imp, imp_col, ECS_FCT_IMP_FAMILLE_NUM,
166
ECS_TYPE_ecs_int_t, &(this_fam->num));
168
/* Impression de la liste chainee des descripteurs composant la famille */
169
/*----------------------------------------------------------------------*/
171
/* Impression du pointeur sur le descripteur de tete */
173
ecs_fic__imprime_val(fic_imp, imp_col, ECS_FCT_IMP_FAMILLE_DESCR,
174
ECS_TYPE_void, this_fam->descr);
176
/* Appel à la fonction d'impression d'une chaine de descripteurs */
178
ecs_descr_chaine__imprime(this_fam->descr,
182
/* Impression du lien sur une eventuelle famille suivante */
183
/*--------------------------------------------------------*/
185
ecs_fic__imprime_val(fic_imp, imp_col, ECS_FCT_IMP_FAMILLE_L_FAMILLE,
186
ECS_TYPE_void, this_fam->l_famille_sui);
189
/*----------------------------------------------------------------------------
190
* Fonction qui renvoie la taille en octets d'une structure `ecs_famille_t'
191
*----------------------------------------------------------------------------*/
194
ecs_famille__ret_taille(const ecs_famille_t *this_fam)
198
/*xxxxxxxxxxxxxxxxxxxxxxxxxxx Instructions xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx*/
200
assert(this_fam != NULL);
202
taille = sizeof(*this_fam);
204
taille += ecs_descr_chaine__ret_taille(this_fam->descr);
209
/*----------------------------------------------------------------------------
210
* Fonction qui renvoie le nombre et la liste des des pointeurs sur les noms
211
* des descripteurs de la famille donnée en argument
212
*----------------------------------------------------------------------------*/
215
ecs_famille__ret_nom(const ecs_famille_t *this_fam)
217
/*xxxxxxxxxxxxxxxxxxxxxxxxxxx Instructions xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx*/
219
assert(this_fam != NULL);
221
return ecs_descr_chaine__ret_nom(this_fam->descr);
224
/*----------------------------------------------------------------------------
225
* Fonction qui alloue une structure `ecs_famille_t' et qui remplit
226
* son contenu en copiant le contenu de la structure donnée en argument
227
*----------------------------------------------------------------------------*/
230
ecs_famille__copie(ecs_famille_t *this_famille)
233
ecs_famille_t * famille_loc;
235
/*xxxxxxxxxxxxxxxxxxxxxxxxxxx Instructions xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx*/
237
assert(this_famille != NULL);
239
descr = ecs_descr_chaine__copie(this_famille->descr);
241
famille_loc = ecs_famille__cree(this_famille->num, descr);
246
/*----------------------------------------------------------------------------
247
* Fonction qui affiche la définition de la famille
248
*----------------------------------------------------------------------------*/
251
ecs_famille__affiche(const ecs_famille_t *this_fam)
253
/*xxxxxxxxxxxxxxxxxxxxxxxxxxx Instructions xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx*/
255
assert(this_fam != NULL);
258
_("Family"), this_fam->num);
260
ecs_descr_chaine__affiche(this_fam->descr,
261
(int)strlen(_("Family")) + 1);
264
/*----------------------------------------------------------------------------*/