PIPS
sommet.h
Go to the documentation of this file.
1 /* Warning! Do not modify this file that is automatically generated! */
2 /* Modify src/Libs/sommet/sommet-local.h instead, to add your own modifications. */
3 
4 /* header file built by cproto */
5 
6 #ifndef sommet_header_included
7 #define sommet_header_included
8 /* sommet-local.h */
9 /*
10 
11  $Id: sommet-local.h 1641 2016-03-02 08:20:19Z coelho $
12 
13  Copyright 1989-2016 MINES ParisTech
14 
15  This file is part of Linear/C3 Library.
16 
17  Linear/C3 Library is free software: you can redistribute it and/or modify it
18  under the terms of the GNU Lesser General Public License as published by
19  the Free Software Foundation, either version 3 of the License, or
20  any later version.
21 
22  Linear/C3 Library is distributed in the hope that it will be useful, but WITHOUT ANY
23  WARRANTY; without even the implied warranty of MERCHANTABILITY or
24  FITNESS FOR A PARTICULAR PURPOSE.
25 
26  See the GNU Lesser General Public License for more details.
27 
28  You should have received a copy of the GNU Lesser General Public License
29  along with Linear/C3 Library. If not, see <http://www.gnu.org/licenses/>.
30 
31 */
32 
33 /* package sommet: structure de donnees representant les sommets
34  * d'un systeme generateur; elle contient:
35  * - le vecteur correspondant, a un coefficient multiplicatif pret qui le
36  * rend entier,
37  * - son denominateur,
38  * - un eventuel tableau de saturation (par rapport a une liste implicite
39  * de contraintes),
40  * - le chainage vers les autres rayons ou droites.
41  *
42  * Francois Irigoin, Mai 1989
43  *
44  * Cette structure de donnees est aussi utilisee dans plint.dir pour
45  * representer la fonction economique, les contraintes lineaires et
46  * les systemes de contraintes lineaires.
47  *
48  * FI: commentaires a completer par Corinne, declaration d'un type
49  * synonyme pour eviter les conflits?
50  */
51 
52 #ifndef SOMMET
53 
54 /* valeur numerique utilise pour flagger les structures de donnees de type
55  * sommet */
56 #define SOMMET 1004
57 
58 /* structure de donnees Sommet
59  * - eq_sat: eventuel tableau des saturations du sommets par rapport a un
60  * eventuel systeme de contraintes; inutilisable quand on ne connait pas
61  * le nombre de contraintes, egalites ou inegalites
62  * - vecteur: coordonnees entieres du sommet, a un coefficient multiplicatif
63  * pres; l'inverse de ce coefficient est donne par le champ suivant
64  * - denominateur: coefficient permettant de garder les coordonnees du
65  * sommet sous forme rationnelle; les numerateurs des coordonnees se
66  * trouvent dans "vecteur"; le denominateur est unique, pour le sommet,
67  * i.e. c'est le PGCD des coordonnees; le denominateur doit toujours
68  * etre strictement positif
69  * - succ: pointeur vers le sommet suivant; on s'interesse a l'ensemble
70  * des sommets du systeme generateur plutot qu'a un sommet particulier
71  */
72 typedef struct typ_som {
73  int *eq_sat;
76  struct typ_som *succ;
78 
79 #define print_som(s) sommet_fprint(stdout,s)
80 
81 #define print_lsom(ls) fprint_lsom(stdout,ls)
82 
83 #define VERSION_FINALE
84 #ifdef VERSION_FINALE
85 #define SOMMET_RM(s,function_name) sommet_rm(s)
86 #else
87 #define SOMMET_RM(s,function_name) dbg_sommet_rm(s,function_name)
88 #endif
89 
90 /* macros d'acces */
91 
92 /* int sommet_denominateur(Psommet): denominateur des coordonnees d'un
93  * sommet; ex den_of()
94  */
95 #define sommet_denominateur(s) ((s)->denominateur)
96 
97 #endif /* SOMMET */
98 /* cproto-generated files */
99 /* sommet.c */
100 extern Psommet sommet_new(void);
101 extern Psommet sommet_make(Value /*d*/, Pvecteur /*v*/);
102 extern Psommet sommet_dup(Psommet /*s_in*/);
103 extern void sommet_rm(Psommet /*s*/);
104 extern void dbg_sommet_rm(Psommet /*s*/, char */*f*/);
105 extern void sommet_fprint(FILE */*f*/, Psommet /*s*/, char *(* /*nom_var*/)(Variable));
106 extern void sommet_fprint_as_dense(FILE */*f*/, Psommet /*s*/, Pbase /*b*/);
107 extern void sommet_dump(Psommet /*s*/);
108 extern void fprint_lsom(FILE */*f*/, Psommet /*ls*/, char *(* /*nom_var*/)(Variable));
109 extern void fprint_lsom_as_dense(FILE */*f*/, Psommet /*ls*/, Pbase /*b*/);
110 extern void sommet_normalize(Psommet /*ns*/);
111 extern bool som_in_liste(Psommet /*s*/, Psommet /*listes*/);
112 extern bool sommet_egal(Psommet /*s1*/, Psommet /*s2*/);
113 extern bool egaliste_s(Psommet /*l1*/, Psommet */*ad_l2*/);
114 extern void sommet_add(Psommet */*ps*/, Psommet /*som*/, int */*nb_som*/);
115 /* sommets.c */
116 extern Psommet sommets_dup(Psommet /*som*/);
117 extern void sommets_rm(Psommet /*ps*/);
118 extern void sommets_normalize(Psommet /*som*/);
119 #endif /* sommet_header_included */
int Value
void sommets_normalize(Psommet)
void sommets_normalize(som) Normalisation des elements d'une liste de sommets i.e.
Definition: sommets.c:108
struct typ_som * Psommet
structure de donnees Sommet
void fprint_lsom(FILE *, Psommet, char *(*)(Variable))
void fprint_lsom_as_dense(FILE *, Psommet, Pbase)
void fprint_lsom_as_dense(FILE * f, Psommet s): impression d'une liste de sommets
Definition: sommet.c:191
void sommet_fprint_as_dense(FILE *, Psommet, Pbase)
void sommet_fprint_as_dense(FILE * f, Psommet s): impression d'un sommet
Definition: sommet.c:152
void dbg_sommet_rm(Psommet, char *)
Definition: sommet.c:117
void sommets_rm(Psommet)
void sommets_rm(Psommet ps): liberation de l'espace memoire alloue a une liste de sommets
Definition: sommets.c:83
struct typ_som Ssommet
bool sommet_egal(Psommet, Psommet)
bool sommet_egal(Psommet s1, Psommet s2): test de l'egalite de representation de deux sommets
Definition: sommet.c:242
Psommet sommet_dup(Psommet)
Psommet sommet_dup(Psommet s_in): allocation et copie de la valeur d'un sommet.
Definition: sommet.c:82
void sommet_normalize(Psommet)
void sommet_normalize(Psommet ns): normalisation des coordonnees d'un sommet par le pgcd des coordonn...
Definition: sommet.c:205
Psommet sommet_new(void)
SOMMET.
Definition: sommet.c:51
void sommet_rm(Psommet)
void sommet_rm(Psommet s): desallocation complete d'une structure sommet
Definition: sommet.c:110
Psommet sommet_make(Value, Pvecteur)
Psommet sommet_make(int d, Pvecteur v): allocation et initialisation d'un sommet de denominateur d et...
Definition: sommet.c:67
void sommet_fprint(FILE *, Psommet, char *(*)(Variable))
void sommet_add(Psommet *, Psommet, int *)
void sommet_add(Psommet *ps, Psommet som, int *nb_soms): Ajout d'un sommet a une liste de sommets Le ...
Definition: sommet.c:342
bool egaliste_s(Psommet, Psommet *)
bool egaliste_s(Psommet l1, Psommet * ad_l2): test d'egalite de listes de sommets
Definition: sommet.c:258
void sommet_dump(Psommet)
void sommet_dump(Psommet s): impression d'un sommet sur stderr avec variable_debug_name()
Definition: sommet.c:168
Psommet sommets_dup(Psommet)
sommets.c
Definition: sommets.c:49
bool som_in_liste(Psommet, Psommet)
bool som_in_liste(Psommet s, Psommet l): test de l'appartenance du sommet s a la liste de sommets l
Definition: sommet.c:222
le type des coefficients dans les vecteurs: Value est defini dans le package arithmetique
Definition: vecteur-local.h:89
structure de donnees Sommet
Definition: sommet-local.h:64
struct typ_som * succ
Definition: sommet-local.h:68
Pvecteur vecteur
Definition: sommet-local.h:66
int * eq_sat
Definition: sommet-local.h:65
Value denominateur
Definition: sommet-local.h:67
void * Variable
arithmetique is a requirement for vecteur, but I do not want to inforce it in all pips files....
Definition: vecteur-local.h:60