PIPS
|
Go to the source code of this file.
Data Structures | |
struct | ttsg_soms |
Representation d'un ensemble de sommets. More... | |
struct | ttsg_vects |
Representation d'un ensemble de droites. More... | |
struct | type_sg |
Representation d'un systeme generateur par trois ensembles de sommets de rayons et de droites. More... | |
Macros | |
#define | TSG 101 |
Warning! Do not modify this file that is automatically generated! More... | |
#define | TSGSOMS 103 |
#define | TSGVECTS 104 |
#define | SG_UNDEFINED ((Ptsg) NULL) |
#define | SG_UNDEFINED_P(sg) ((sg)==(SG_UNDEFINED)) |
#define | sg_sommets(sg) ((sg)->soms_sg.ssg) |
vieilles definitions des fonctions d'impression void sg_fprint(); #define print_sg(sg) sg_fprint(stdout,sg) More... | |
#define | sg_rayons(sg) ((sg)->rays_sg.vsg) |
acces au premier rayon de la liste des rayons d'un systeme generateur defini par un pointeur: sg_rayons(Ptsg) More... | |
#define | sg_droites(sg) ((sg)->dtes_sg.vsg) |
acces a la premiere droite de la liste des droites d'un systeme generateur defini par un pointeur: sg_droites(Ptsg) More... | |
#define | sg_nbre_sommets(sg) ((sg)->soms_sg.nb_s) |
nombre de sommets: int sg_nbre_sommets(Ptsg) More... | |
#define | sg_nbre_rayons(sg) ((sg)->rays_sg.nb_v) |
nombre de rayons: int sg_nbre_rayons(Ptsg) More... | |
#define | sg_nbre_droites(sg) ((sg)->dtes_sg.nb_v) |
nombre de droites: int sg_nbre_droites(Ptsg) More... | |
#define | sg_base(sg) ((sg)->base) |
Basis used for the generating system. More... | |
#define | sg_empty(sg) ((sg)->soms_sg.nb_s==0 &&(sg)-> rays_sg.nb_v == 0 && (sg)->dtes_sg.nb_v == 0) |
Test for an empty generating system, which corresponds to an empty set. More... | |
Typedefs | |
typedef struct ttsg_soms * | Ptsg_soms |
Representation d'un ensemble de sommets. More... | |
typedef struct ttsg_soms | Stsg_soms |
typedef struct ttsg_vects * | Ptsg_vects |
Representation d'un ensemble de droites. More... | |
typedef struct ttsg_vects | Stsg_vects |
typedef struct type_sg * | Ptsg |
Representation d'un systeme generateur par trois ensembles de sommets de rayons et de droites. More... | |
typedef struct type_sg | Stsg |
Functions | |
Ptsg | sg_new (void) |
Obsolete macros of Malik Imadache #define soms_of_sg(sg) (((sg).soms_sg).ssg) #define rays_of_sg(sg) (((sg).rays_sg).vsg) #define dtes_of_sg(sg) (((sg).dtes_sg).vsg) More... | |
Ptsg | sg_dup (Ptsg) |
Ptsg sg_dup(Ptsg sg_in): allocation d'un systeme generateur sg_out et copie sans sharing des ensembles de rayons, de droites et de sommets de l'argument sg_in. More... | |
Ptsg | sg_without_line (Ptsg) |
Ptsg sg_without_line(Ptsg sg_in): allocation d'un systeme generateur et copie d'un systeme generateur dont on transforme les lignes en rayons. More... | |
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'est affectuee; il y a donc risque de sharing pour le rayon ray; l'argument sg est modifie. More... | |
void | sg_rm_sommets (Ptsg) |
void sg_rm_sommets(Ptsg sg): desallocation d'une liste de sommets d'un systeme generateur More... | |
void | sg_rm_rayons (Ptsg) |
void sg_rm_rayons(Ptsg sg): desallocation d'une liste de rayons d'un systeme generateur More... | |
void | sg_rm_droites (Ptsg) |
void sg_rm_droites(Ptsg sg): desallocation d'une liste de droites d'un systeme generateur More... | |
void | sg_rm (Ptsg) |
void sg_rm(Ptsg sg): liberation de l'espace memoire occupe par un systeme generateur More... | |
void | sg_fprint (FILE *, Ptsg, char *(*)(Variable)) |
void | sg_print (Ptsg, char *(*)(Variable)) |
void | sg_dump (Ptsg) |
For debugging. More... | |
void | sg_fprint_as_dense (FILE *, Ptsg, Pbase) |
void sg_fprint_as_dense(FILE * f, Ptsg sg): impression d'un systeme generateur More... | |
void | sg_fprint_as_ddv (FILE *, Ptsg) |
bool | sg_egal (Ptsg, Ptsg) |
bool sg_egal(Ptsg sg1, Ptsg sg2): test de l'egalite de deux systemes generateur sg1 et sg2 More... | |
Ptsg | mk_rn (Pbase) |
Ptsg mk_rn(Pbase b): construction du systeme generateur du polyedre qui represente l'espace entier; le systeme de contraintes correspondant est vide: il ne contient ni egalite ni inegalite non triviale;. More... | |
Ptsg | ajout_dte (Ptsg, Variable) |
Ptsg ajout_dte(Ptsg sg, Variable v): ajoute une droite dans la direction correspondant a la variable v. More... | |
bool | sommet_in_sg_p (Psommet, Ptsg) |
bool | ray_in_sg_p (Pray_dte, Ptsg) |
bool | dte_in_sg_p (Pray_dte, Ptsg) |
Ptsg | sg_union (Ptsg, Ptsg) |
acces a la premiere droite de la liste des droites d'un systeme generateur defini par un pointeur: sg_droites(Ptsg)
nombre de droites: int sg_nbre_droites(Ptsg)
nombre de rayons: int sg_nbre_rayons(Ptsg)
nombre de sommets: int sg_nbre_sommets(Ptsg)
acces au premier rayon de la liste des rayons d'un systeme generateur defini par un pointeur: sg_rayons(Ptsg)
vieilles definitions des fonctions d'impression void sg_fprint(); #define print_sg(sg) sg_fprint(stdout,sg)
macros d'acces aux champs acces au premier sommet de la liste des sommets d'un systeme generateur defini par un pointeur: sg_sommets(Ptsg)
#define SG_UNDEFINED_P | ( | sg | ) | ((sg)==(SG_UNDEFINED)) |
#define TSG 101 |
Warning! Do not modify this file that is automatically generated!
Modify src/Libs/sg/sg-local.h instead, to add your own modifications. header file built by cproto sg-local.h package sur les systemes generateur sg
Francois Irigoin, Mai 1989
packages a inclure: boolean.h, arithmetique.h, variable.h, vecteur.h, ray_dte.h et sommet.h
package utilisateur: polyedre.h
Representation d'un systeme generateur par trois ensembles de sommets de rayons et de droites.
L'ensemble vide est represente par un systeme generateur n'ayant aucun element dans ces trois ensembles (soms_sg.nb_s==0 && rays_sg.nb_v == 0 && dtes_sg.nb_v == 0)
L'espace tout entier Rn est represente par n droites et un sommet. Par convention ce sommet est l'origine.
La dimension de l'espace contenant le polyedre genere n'est pas accessible directement. Il faut parcourir tous les elements generateurs et chercher leurs coordonnees non nulles.
typedef struct ttsg_vects * Ptsg_vects |
Representation d'un ensemble de droites.
typedef struct ttsg_vects Stsg_vects |
Ptsg ajout_dte(Ptsg sg, Variable v): ajoute une droite dans la direction correspondant a la variable v.
creation
ajout
sg | g |
Definition at line 487 of file sg.c.
References MALLOC, RAY_DTE, sg, sg_droites, sg_nbre_droites, rdte::succ, VALUE_ONE, vect_new(), and rdte::vecteur.
dte | te |
sg | g |
Definition at line 537 of file sg.c.
References type_sg::dtes_sg, sg, SG_UNDEFINED_P, rdte::succ, vect_equal(), rdte::vecteur, and ttsg_vects::vsg.
Referenced by sg_union().
Ptsg mk_rn(Pbase b): construction du systeme generateur du polyedre qui represente l'espace entier; le systeme de contraintes correspondant est vide: il ne contient ni egalite ni inegalite non triviale;.
Modifications:
un sommet a l'origine
il n'y a aucun rayon
enfin, une droite par dimension
Definition at line 451 of file sg.c.
References base_dimension, type_sg::dtes_sg, fprintf(), ifdebug, ray_dte_make(), type_sg::rays_sg, sg, sg_fprint(), sg_new(), sommet_make(), type_sg::soms_sg, rdte::succ, Svecteur::succ, VALUE_ONE, variable_dump_name(), vect_new(), VECTEUR_NUL, VECTEUR_NUL_P, and vecteur_var.
ray | ay |
sg | g |
Definition at line 522 of file sg.c.
References type_sg::rays_sg, sg, SG_UNDEFINED_P, rdte::succ, vect_equal(), rdte::vecteur, and ttsg_vects::vsg.
Referenced by sg_union().
Ptsg sg_add_ray(Ptsg sg, Pray_dte ray): ajout d'un rayon a un syteme generateur; aucune allocation n'est affectuee; il y a donc risque de sharing pour le rayon ray; l'argument sg est modifie.
Aucune elimination de redondance pour le moment. On peut en envisager trois niveaux: egalite entre rayons, proportionalite entre rayons et combinaison lineaire positive de rayons.
chainage en tete de la liste des rayons
sg | g |
ray | ay |
Definition at line 189 of file sg.c.
References type_sg::rays_sg, sg, and ttsg_vects::vsg.
void sg_dump | ( | Ptsg | sg | ) |
For debugging.
sg | g |
Definition at line 288 of file sg.c.
References sg, sg_print(), and variable_dump_name().
Ptsg sg_dup(Ptsg sg_in): allocation d'un systeme generateur sg_out et copie sans sharing des ensembles de rayons, de droites et de sommets de l'argument sg_in.
sg_in n'est pas modifie
Autre nom (obsolete): cp_sg()
Extension: duplicate undefined generating systems (FI, 22 May 2009)
sc_dup() has been replaced by sc_copy() which maintains the order in the data structure lists. Maybe we need the same change for generating systems.
duplication de la liste des sommets
duplication de la liste des rayons
duplication de la liste des droites
sg_in | g_in |
Definition at line 84 of file sg.c.
References type_sg::base, base_dup(), type_sg::dtes_sg, ttsg_soms::nb_s, ttsg_vects::nb_v, ray_dte_dup(), type_sg::rays_sg, sg_new(), SG_UNDEFINED, SG_UNDEFINED_P, sommet_dup(), type_sg::soms_sg, ttsg_soms::ssg, rdte::succ, typ_som::succ, and ttsg_vects::vsg.
Referenced by conflict_dup(), initialize_newgen(), sg_union(), and sg_without_line().
bool sg_egal(Ptsg sg1, Ptsg sg2): test de l'egalite de deux systemes generateur sg1 et sg2
Ce test suppose que les deux systemes ont ete prealablement normalises:
Ancien nom: sg_egal()
sg1 | g1 |
sg2 | g2 |
Definition at line 434 of file sg.c.
References egal_rd(), egal_soms(), and sg_nbre_sommets.
void sg_fprint | ( | FILE * | , |
Ptsg | , | ||
char * | *)(Variable | ||
) |
void sg_fprint_as_ddv | ( | FILE * | fd, |
Ptsg | sg | ||
) |
For each coordinate
For all vertices
For all rays
For all lines
fd | d |
sg | g |
Definition at line 341 of file sg.c.
References type_sg::base, BASE_NULLE, BASE_NULLE_P, direction_to_representation, fprintf(), line_to_direction, ray_to_direction, sg, sg_droites, sg_rayons, sg_sommets, rdte::succ, typ_som::succ, Svecteur::succ, value_sign, vect_coeff(), rdte::vecteur, typ_som::vecteur, vecteur_var, and vertex_to_direction.
Referenced by check_for_conflict(), prettyprint_dependence_graph(), and prettyprint_dot_dependence_graph().
void sg_fprint_as_dense(FILE * f, Ptsg sg): impression d'un systeme generateur
Note: b could/should be sg->base
sg | g |
Definition at line 298 of file sg.c.
References f(), fprint_lray_dte_as_dense(), fprint_lsom_as_dense(), fprintf(), sg, sg_droites, sg_nbre_droites, sg_nbre_rayons, sg_nbre_sommets, sg_rayons, and sg_sommets.
Referenced by legal_point_p(), prettyprint_dependence_graph(), and prettyprint_dependence_graph_view().
Ptsg sg_new | ( | void | ) |
Obsolete macros of Malik Imadache #define soms_of_sg(sg) (((sg).soms_sg).ssg) #define rays_of_sg(sg) (((sg).rays_sg).vsg) #define dtes_of_sg(sg) (((sg).dtes_sg).vsg)
TSG cproto-generated files sg.c
Obsolete macros of Malik Imadache #define soms_of_sg(sg) (((sg).soms_sg).ssg) #define rays_of_sg(sg) (((sg).rays_sg).vsg) #define dtes_of_sg(sg) (((sg).dtes_sg).vsg)
Definition at line 55 of file sg.c.
References type_sg::base, type_sg::dtes_sg, MALLOC, ttsg_soms::nb_s, ttsg_vects::nb_v, type_sg::rays_sg, sg, type_sg::soms_sg, ttsg_soms::ssg, TSG, and ttsg_vects::vsg.
Referenced by dependence_cone_positive(), main(), mk_rn(), sg_dup(), and sg_of_rays().
void sg_print | ( | Ptsg | , |
char * | *)(Variable | ||
) |
void sg_rm | ( | Ptsg | sg | ) |
void sg_rm(Ptsg sg): liberation de l'espace memoire occupe par un systeme generateur
Ne pas oublier de remettre le pointeur correspondant a NULL dans le programme appelant
Ancien nom: elim_sg()
sg | g |
Definition at line 249 of file sg.c.
References type_sg::base, base_rm, FREE, sg, sg_rm_droites(), sg_rm_rayons(), sg_rm_sommets(), and TSG.
Referenced by dependence_cone_positive(), initialize_newgen(), sg_of_sc(), and TestDependence().
void sg_rm_droites | ( | Ptsg | sg | ) |
void sg_rm_droites(Ptsg sg): desallocation d'une liste de droites d'un systeme generateur
sg | g |
Definition at line 233 of file sg.c.
References elim_tt_rd(), ttsg_vects::nb_v, type_sg::rays_sg, sg, and ttsg_vects::vsg.
Referenced by sg_rm().
void sg_rm_rayons | ( | Ptsg | sg | ) |
void sg_rm_rayons(Ptsg sg): desallocation d'une liste de rayons d'un systeme generateur
sg | g |
Definition at line 222 of file sg.c.
References elim_tt_rd(), ttsg_vects::nb_v, type_sg::rays_sg, sg, and ttsg_vects::vsg.
Referenced by sg_rm().
void sg_rm_sommets | ( | Ptsg | sg | ) |
void sg_rm_sommets(Ptsg sg): desallocation d'une liste de sommets d'un systeme generateur
Ex-fonction elim_tt_som() qui prenait en argument une liste de sommets
sg | g |
Definition at line 205 of file sg.c.
References ttsg_soms::nb_s, s1, sg, SOMMET_RM, type_sg::soms_sg, ttsg_soms::ssg, and typ_som::succ.
Referenced by sg_rm().
union des sommets
union des rayons
nion des droites
sg1 | g1 |
sg2 | g2 |
Definition at line 552 of file sg.c.
References type_sg::base, base_rm, base_union(), dte_in_sg_p(), type_sg::dtes_sg, ttsg_soms::nb_s, ttsg_vects::nb_v, ray_dte_dup(), ray_in_sg_p(), type_sg::rays_sg, sg, sg_dup(), sg_nbre_droites, sg_nbre_rayons, sg_nbre_sommets, sommet_dup(), sommet_in_sg_p(), type_sg::soms_sg, ttsg_soms::ssg, rdte::succ, typ_som::succ, and ttsg_vects::vsg.
Referenced by main().
Ptsg sg_without_line(Ptsg sg_in): allocation d'un systeme generateur et copie d'un systeme generateur dont on transforme les lignes en rayons.
Aucune elimination de redondance pour le moment. On peut en envisager trois niveaux: egalite entre rayons, proportionalite entre rayons et combinaison lineaire positive de rayons.
ajout des l'oppose des vecteurs directeur des droites a la liste des rayons
allocation et calcul du vecteur opppose
chainage en tete de la liste des rayons
ajout (sans duplication en memoire) de la liste des vecteurs directeurs des droites a la liste des rayons, si l'ensemble des droites n'est pas vide
ajout de l'ensemble des rayons a l'ensemble des droites
transfert de la liste des droites a la liste des rayons
mise a jour des nombres de droites et de vecteurs
sg_in | g_in |
Definition at line 132 of file sg.c.
References type_sg::dtes_sg, fprintf(), ifdebug, ttsg_vects::nb_v, ray_oppose(), type_sg::rays_sg, sg_dup(), sg_fprint(), rdte::succ, variable_dump_name(), and ttsg_vects::vsg.
som | om |
sg | g |
Definition at line 507 of file sg.c.
References sg, SG_UNDEFINED_P, type_sg::soms_sg, ttsg_soms::ssg, typ_som::succ, vect_equal(), and typ_som::vecteur.
Referenced by sg_union().