Code_Saturne
CFD tool
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros
ecs_descr_chaine.h
Go to the documentation of this file.
1 #ifndef _ECS_DESCR_CHAINE_H_
2 #define _ECS_DESCR_CHAINE_H_
3 
4 /*============================================================================
5  * Prototypes des fonctions de base
6  * associées à une liste chaînée de structures `ecs_descr_t' décrivant
7  * un descripteur de table
8  *============================================================================*/
9 
10 /*
11  This file is part of Code_Saturne, a general-purpose CFD tool.
12 
13  Copyright (C) 1998-2012 EDF S.A.
14 
15  This program is free software; you can redistribute it and/or modify it under
16  the terms of the GNU General Public License as published by the Free Software
17  Foundation; either version 2 of the License, or (at your option) any later
18  version.
19 
20  This program is distributed in the hope that it will be useful, but WITHOUT
21  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
22  FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
23  details.
24 
25  You should have received a copy of the GNU General Public License along with
26  this program; if not, write to the Free Software Foundation, Inc., 51 Franklin
27  Street, Fifth Floor, Boston, MA 02110-1301, USA.
28 */
29 
30 /*----------------------------------------------------------------------------*/
31 
32 
33 /*============================================================================
34  * Visibilité
35  *============================================================================*/
36 
37 /*----------------------------------------------------------------------------
38  * Fichiers `include' librairie standard C ou BFT
39  *----------------------------------------------------------------------------*/
40 
41 #include <stdio.h>
42 
43 /*----------------------------------------------------------------------------
44  * Fichiers `include' publics du paquetage global "Utilitaire"
45  *----------------------------------------------------------------------------*/
46 
47 #include "ecs_tab.h"
48 
49 /*----------------------------------------------------------------------------
50  * Fichiers `include' publics des paquetages visibles
51  *----------------------------------------------------------------------------*/
52 
53 /*----------------------------------------------------------------------------
54  * Fichiers `include' publics du paquetage courant
55  *----------------------------------------------------------------------------*/
56 
57 #include "ecs_descr.h"
58 
59 /*============================================================================
60  * Prototypes de fonctions publiques
61  *============================================================================*/
62 
63 /*----------------------------------------------------------------------------
64  * Fonction libérant la portion d'une liste chaînée de descripteurs
65  * à partir d'un noeud dont le pointeur est donné en argument.
66  * Le noeud est à NULL au retour de la fonction
67  *----------------------------------------------------------------------------*/
68 
69 void
71 
72 /*----------------------------------------------------------------------------
73  * Fonction imprimant à partir d'un noeud `ecs_descr_t' donné
74  * une liste chaînée de tables
75  * sur le flux décrit par la structure `ecs_file_t'
76  *----------------------------------------------------------------------------*/
77 
78 void ecs_descr_chaine__imprime(const ecs_descr_t *descr_noeud,
79  int imp_col,
80  FILE *fic_imp);
81 
82 /*----------------------------------------------------------------------------
83  * Fonction qui renvoie la taille en octets
84  * d'une chaîné de structures `ecs_descr_t'
85  *----------------------------------------------------------------------------*/
86 
87 float
88 ecs_descr_chaine__ret_taille(const ecs_descr_t *descr_noeud);
89 
90 /*----------------------------------------------------------------------------
91  * Fonction qui ajoute à la fin d'une liste chaînée de descripteurs
92  * réceptrice dont la tête est donnée, une liste chaînée de descripteurs
93  * à concaténer dont la tête est donnée
94  *
95  * Les numéros des descripteurs de la liste à concaténer sont incrementés
96  * à partir du nombre de descripteur de la liste réceptrice
97  *
98  * Remarque: cette fonction se contente d'ajouter des descripteurs sans
99  * vérifier si le descripteur ajoute a le même contenu qu'un autre
100  * descripteur déjà présent dans la liste.
101  * Pour une vérification, utiliser `ecs_descr_chaine__concatene()'
102  *----------------------------------------------------------------------------*/
103 
104 void
106  ecs_descr_t *descr_concat_tete);
107 
108 /*----------------------------------------------------------------------------
109  * Fonction qui renvoie le nombre de descripteurs
110  * de la liste chaînée des descripteurs dont la tête est donnée
111  *----------------------------------------------------------------------------*/
112 
113 int
114 ecs_descr_chaine__ret_nbr(const ecs_descr_t *descr_tete);
115 
116 /*----------------------------------------------------------------------------
117  * Fonction qui copie une liste chaînée de descripteurs
118  * dont la tête est donnée
119  *----------------------------------------------------------------------------*/
120 
121 ecs_descr_t *
123 
124 /*----------------------------------------------------------------------------
125  * Fonction qui concatène,
126  * à la fin d'une liste chaînée de descripteurs dont la tête est donnée,
127  * une autre liste chaînée de descripteurs dont la tête est donnée,
128  * en supprimant les descripteurs déjà présents dans la 1ère liste
129  * et en décalant la renumérotation des descripteurs de la 2nde liste
130  *
131  * La fonction renvoie la renumérotation des descripteurs de la 2nde liste
132  *----------------------------------------------------------------------------*/
133 
135 ecs_descr_chaine__concatene(ecs_descr_t **descr_recept_tete,
136  ecs_descr_t **descr_concat_tete);
137 
138 /*----------------------------------------------------------------------------
139  * Fonction qui affiche les contenus des descripteurs
140  * de la liste chaînée des descripteurs dont la tête est donnée
141  *----------------------------------------------------------------------------*/
142 
143 void
145  int decal);
146 
147 /*----------------------------------------------------------------------------
148  * Fonction qui recherche dans une liste chaînée de descripteurs
149  * dont la tête est donnée,
150  * un numéro de descripteur donné
151  *
152  * La fonction renvoie :
153  * - le pointeur du descripteur si le numéro de descripteur a été trouve
154  * - ou NULL sinon
155  *----------------------------------------------------------------------------*/
156 
157 ecs_descr_t *
159  int num);
160 
161 /*----------------------------------------------------------------------------
162  * Fonction qui recherche dans une liste chaînée de descripteurs
163  * dont la tête est donnée,
164  * un descripteur ayant les mêmes type, identificateur et nom
165  * que le descripteur donné
166  *
167  * La fonction renvoie :
168  * - le numéro du descripteur si le descripteur a été trouve
169  * - ou ECS_DESCR_NUM_NUL si le descripteur n'a pas été trouve
170  *----------------------------------------------------------------------------*/
171 
172 int
174  const ecs_descr_t *descr_rech);
175 
176 /*----------------------------------------------------------------------------
177  * Fonction qui crée une nouvelle chaîne de descripteurs
178  * à partir d'une chaîne de descripteurs dont la tête est donnée
179  * Un descripteur est copié dans la nouvelle chaîne si son numéro
180  * ne se transforme pas par le vecteur de transformation donné
181  * en `ECS_DESCR_NUM_NUL'
182  * Les membres du descripteur sont copies dans le nouveau sans modification
183  * sauf le numéro qui devient celui transformé par le vecteur
184  *----------------------------------------------------------------------------*/
185 
186 ecs_descr_t *
188  const ecs_tab_int_t vect_transf);
189 
190 /*----------------------------------------------------------------------------
191  * Fonction qui renvoie le nombre et la liste des pointeurs sur les noms
192  * des descripteurs de type groupe d'une liste chaînée dont la tête est
193  * donnée en argument
194  *----------------------------------------------------------------------------*/
195 
198 
199 /*----------------------------------------------------------------------------
200  * Fonction qui renvoie la liste des références des descripteurs
201  * de la liste chaînée des descripteurs dont la tête est donnée
202  *----------------------------------------------------------------------------*/
203 
204 ecs_descr_t **
206  int *nbr_descr);
207 
208 /*----------------------------------------------------------------------------
209  * Fonction qui crée une nouvelle chaîne de descripteurs
210  * à partir d'une chaîne de descripteurs dont la tête est donnée
211  * Un descripteur est copié dans la nouvelle chaîne si son numéro
212  * ne se transforme pas par le vecteur de transformation donné
213  * en `ECS_DESCR_NUM_NUL'
214  * Les membres du descripteur sont copies dans le nouveau sans modification
215  * sauf le numéro qui devient celui transformé par le vecteur
216  *----------------------------------------------------------------------------*/
217 
220 
221 /*----------------------------------------------------------------------------*/
222 
223 #endif /* _ECS_DESCR_CHAINE_H_ */
int num
Definition: ecs_descr_priv.h:60
Definition: ecs_descr_priv.h:58
Definition: ecs_tab.h:44
ecs_tab_int_t ecs_descr_chaine__concatene(ecs_descr_t **descr_recept_tete, ecs_descr_t **descr_concat_tete)
Definition: ecs_descr_chaine.c:368
void ecs_descr_chaine__imprime(const ecs_descr_t *descr_noeud, int imp_col, FILE *fic_imp)
Definition: ecs_descr_chaine.c:192
ecs_descr_t * ecs_descr_chaine__renumerote(ecs_descr_t *descr_tete, const ecs_tab_int_t vect_transf)
Definition: ecs_descr_chaine.c:550
ecs_descr_t * ecs_descr_chaine__cherche_num(ecs_descr_t *descr_tete, int num)
Definition: ecs_descr_chaine.c:483
ecs_descr_t * ecs_descr_chaine__copie(ecs_descr_t *descr_tete)
Definition: ecs_descr_chaine.c:333
ecs_tab_int_t ecs_descr_chaine__trie(ecs_descr_t *descr_tete)
Definition: ecs_descr_chaine.c:675
int ecs_descr_chaine__ret_nbr(const ecs_descr_t *descr_tete)
Definition: ecs_descr_chaine.c:305
ecs_descr_t ** ecs_descr_chaine__ret_ref(ecs_descr_t *descr_tete, int *nbr_descr)
Definition: ecs_descr_chaine.c:634
ecs_tab_char_t ecs_descr_chaine__ret_nom(ecs_descr_t *descr_tete)
Definition: ecs_descr_chaine.c:589
Definition: ecs_tab.h:39
float ecs_descr_chaine__ret_taille(const ecs_descr_t *descr_noeud)
Definition: ecs_descr_chaine.c:222
int ecs_descr_chaine__trouve_num(ecs_descr_t *descr_tete, const ecs_descr_t *descr_rech)
Definition: ecs_descr_chaine.c:512
void ecs_descr_chaine__affiche(ecs_descr_t *descr_tete, int decal)
Definition: ecs_descr_chaine.c:456
void ecs_descr_chaine__ajoute(ecs_descr_t **descr_tete, ecs_descr_t *descr_concat_tete)
Definition: ecs_descr_chaine.c:258
void ecs_descr_chaine__detruit(ecs_descr_t **descr_noeud)
Definition: ecs_descr_chaine.c:175