PIPS
sg.h
Go to the documentation of this file.
1 /* Warning! Do not modify this file that is automatically generated! */
2 /* Modify src/Libs/sg/sg-local.h instead, to add your own modifications. */
3 
4 /* header file built by cproto */
5 
6 #ifndef sg_header_included
7 #define sg_header_included
8 /* sg-local.h */
9 /*
10 
11  $Id: sg-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 sur les systemes generateur sg
34  *
35  * Francois Irigoin, Mai 1989
36  *
37  * packages a inclure: boolean.h, arithmetique.h, variable.h, vecteur.h,
38  * ray_dte.h et sommet.h
39  *
40  * package utilisateur: polyedre.h
41  */
42 
43 #ifndef TSG
44 #define TSG 101
45 #define TSGSOMS 103
46 #define TSGVECTS 104
47 
48 /* Representation d'un ensemble de sommets */
49 typedef struct ttsg_soms {
50  int nb_s;
51  struct typ_som *ssg;
53 
54 /* Representation d'un ensemble de droites */
55 typedef struct ttsg_vects {
56  int nb_v;
57  Pray_dte vsg;
59 
60 /* Representation d'un systeme generateur par trois ensembles de sommets
61  * de rayons et de droites
62  *
63  * L'ensemble vide est represente par un systeme generateur n'ayant
64  * aucun element dans ces trois ensembles (soms_sg.nb_s==0 &&
65  * rays_sg.nb_v == 0 && dtes_sg.nb_v == 0)
66  *
67  * L'espace tout entier Rn est represente par n droites et un sommet.
68  * Par convention ce sommet est l'origine.
69  *
70  * La dimension de l'espace contenant le polyedre genere n'est pas
71  * accessible directement. Il faut parcourir tous les elements
72  * generateurs et chercher leurs coordonnees non nulles.
73  */
74 typedef struct type_sg {
78  Pbase base;
79  } *Ptsg,Stsg;
80 
81 #define SG_UNDEFINED ((Ptsg) NULL)
82 #define SG_UNDEFINED_P(sg) ((sg)==(SG_UNDEFINED))
83 
84 /* vieilles definitions des fonctions d'impression
85  * void sg_fprint();
86  * #define print_sg(sg) sg_fprint(stdout,sg)
87  */
88 
89 /* macros d'acces aux champs */
90 
91 /* acces au premier sommet de la liste des sommets d'un systeme generateur
92  defini par un pointeur: sg_sommets(Ptsg) */
93 #define sg_sommets(sg) ((sg)->soms_sg.ssg)
94 
95 /* acces au premier rayon de la liste des rayons d'un systeme generateur
96  defini par un pointeur: sg_rayons(Ptsg) */
97 #define sg_rayons(sg) ((sg)->rays_sg.vsg)
98 
99 /* acces a la premiere droite de la liste des droites d'un systeme generateur
100  defini par un pointeur: sg_droites(Ptsg) */
101 #define sg_droites(sg) ((sg)->dtes_sg.vsg)
102 
103 /* nombre de sommets: int sg_nbre_sommets(Ptsg) */
104 #define sg_nbre_sommets(sg) ((sg)->soms_sg.nb_s)
105 
106 /* nombre de rayons: int sg_nbre_rayons(Ptsg) */
107 #define sg_nbre_rayons(sg) ((sg)->rays_sg.nb_v)
108 
109 /* nombre de droites: int sg_nbre_droites(Ptsg) */
110 #define sg_nbre_droites(sg) ((sg)->dtes_sg.nb_v)
111 
112 /* Basis used for the generating system */
113 #define sg_base(sg) ((sg)->base)
114 
115 /* Test for an empty generating system, which corresponds to an empty set */
116 #define sg_empty(sg) \
117  ((sg)->soms_sg.nb_s==0 &&(sg)-> rays_sg.nb_v == 0 && (sg)->dtes_sg.nb_v == 0)
118 
119 /* Obsolete macros of Malik Imadache
120  * #define soms_of_sg(sg) (((sg).soms_sg).ssg)
121  * #define rays_of_sg(sg) (((sg).rays_sg).vsg)
122  * #define dtes_of_sg(sg) (((sg).dtes_sg).vsg)
123  */
124 
125 #endif /* TSG */
126 
127 
128 
129 /* cproto-generated files */
130 /* sg.c */
131 extern Ptsg sg_new(void);
132 extern Ptsg sg_dup(Ptsg /*sg_in*/);
133 extern Ptsg sg_without_line(Ptsg /*sg_in*/);
134 extern Ptsg sg_add_ray(Ptsg /*sg*/, Pray_dte /*ray*/);
135 extern void sg_rm_sommets(Ptsg /*sg*/);
136 extern void sg_rm_rayons(Ptsg /*sg*/);
137 extern void sg_rm_droites(Ptsg /*sg*/);
138 extern void sg_rm(Ptsg /*sg*/);
139 extern void sg_fprint(FILE */*f*/, Ptsg /*sg*/, char *(* /*nom_var*/)(Variable));
140 extern void sg_print(Ptsg /*sg*/, char *(* /*nom_var*/)(Variable));
141 extern void sg_dump(Ptsg /*sg*/);
142 extern void sg_fprint_as_dense(FILE */*f*/, Ptsg /*sg*/, Pbase /*b*/);
143 extern void sg_fprint_as_ddv(FILE */*fd*/, Ptsg /*sg*/);
144 extern bool sg_egal(Ptsg /*sg1*/, Ptsg /*sg2*/);
145 extern Ptsg mk_rn(Pbase /*b*/);
146 extern Ptsg ajout_dte(Ptsg /*sg*/, Variable /*v*/);
147 extern bool sommet_in_sg_p(Psommet /*som*/, Ptsg /*sg*/);
148 extern bool ray_in_sg_p(Pray_dte /*ray*/, Ptsg /*sg*/);
149 extern bool dte_in_sg_p(Pray_dte /*dte*/, Ptsg /*sg*/);
150 extern Ptsg sg_union(Ptsg /*sg1*/, Ptsg /*sg2*/);
151 #endif /* sg_header_included */
void sg_print(Ptsg, char *(*)(Variable))
Ptsg mk_rn(Pbase)
Ptsg mk_rn(Pbase b): construction du systeme generateur du polyedre qui represente l'espace entier; l...
Definition: sg.c:451
void sg_dump(Ptsg)
For debugging.
Definition: sg.c:288
Ptsg sg_new(void)
Obsolete macros of Malik Imadache #define soms_of_sg(sg) (((sg).soms_sg).ssg) #define rays_of_sg(sg) ...
Definition: sg.c:55
struct ttsg_vects Stsg_vects
Ptsg ajout_dte(Ptsg, Variable)
Ptsg ajout_dte(Ptsg sg, Variable v): ajoute une droite dans la direction correspondant a la variable ...
Definition: sg.c:487
Ptsg sg_without_line(Ptsg)
Ptsg sg_without_line(Ptsg sg_in): allocation d'un systeme generateur et copie d'un systeme generateur...
Definition: sg.c:132
void sg_rm_droites(Ptsg)
void sg_rm_droites(Ptsg sg): desallocation d'une liste de droites d'un systeme generateur
Definition: sg.c:233
struct type_sg * Ptsg
Representation d'un systeme generateur par trois ensembles de sommets de rayons et de droites.
bool dte_in_sg_p(Pray_dte, Ptsg)
Definition: sg.c:537
struct ttsg_soms * Ptsg_soms
Representation d'un ensemble de sommets.
Ptsg sg_dup(Ptsg)
Ptsg sg_dup(Ptsg sg_in): allocation d'un systeme generateur sg_out et copie sans sharing des ensemble...
Definition: sg.c:84
void sg_rm_rayons(Ptsg)
void sg_rm_rayons(Ptsg sg): desallocation d'une liste de rayons d'un systeme generateur
Definition: sg.c:222
void sg_fprint_as_ddv(FILE *, Ptsg)
Definition: sg.c:341
struct ttsg_soms Stsg_soms
bool ray_in_sg_p(Pray_dte, Ptsg)
Definition: sg.c:522
Ptsg sg_add_ray(Ptsg, Pray_dte)
Ptsg sg_add_ray(Ptsg sg, Pray_dte ray): ajout d'un rayon a un syteme generateur; aucune allocation n'...
Definition: sg.c:189
void sg_fprint(FILE *, Ptsg, char *(*)(Variable))
void sg_rm(Ptsg)
void sg_rm(Ptsg sg): liberation de l'espace memoire occupe par un systeme generateur
Definition: sg.c:249
struct ttsg_vects * Ptsg_vects
Representation d'un ensemble de droites.
bool sg_egal(Ptsg, Ptsg)
bool sg_egal(Ptsg sg1, Ptsg sg2): test de l'egalite de deux systemes generateur sg1 et sg2
Definition: sg.c:434
void sg_rm_sommets(Ptsg)
void sg_rm_sommets(Ptsg sg): desallocation d'une liste de sommets d'un systeme generateur
Definition: sg.c:205
bool sommet_in_sg_p(Psommet, Ptsg)
Definition: sg.c:507
void sg_fprint_as_dense(FILE *, Ptsg, Pbase)
void sg_fprint_as_dense(FILE * f, Ptsg sg): impression d'un systeme generateur
Definition: sg.c:298
Ptsg sg_union(Ptsg, Ptsg)
Definition: sg.c:552
struct type_sg Stsg
le type des coefficients dans les vecteurs: Value est defini dans le package arithmetique
Definition: vecteur-local.h:89
Representation d'un ensemble de sommets.
Definition: sg-local.h:41
struct typ_som * ssg
Definition: sg-local.h:43
int nb_s
Definition: sg-local.h:42
Representation d'un ensemble de droites.
Definition: sg-local.h:47
Pray_dte vsg
Definition: sg-local.h:49
int nb_v
Definition: sg-local.h:48
structure de donnees Sommet
Definition: sommet-local.h:64
Representation d'un systeme generateur par trois ensembles de sommets de rayons et de droites.
Definition: sg-local.h:66
Stsg_vects rays_sg
Definition: sg-local.h:68
Stsg_soms soms_sg
Definition: sg-local.h:67
Pbase base
Definition: sg-local.h:70
Stsg_vects dtes_sg
Definition: sg-local.h:69
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