PIPS
newgen.c
Go to the documentation of this file.
1 /*
2 
3  $Id: newgen.c 23487 2018-10-22 08:35:46Z coelho $
4 
5  Copyright 1989-2016 MINES ParisTech
6 
7  This file is part of PIPS.
8 
9  PIPS is free software: you can redistribute it and/or modify it
10  under the terms of the GNU General Public License as published by
11  the Free Software Foundation, either version 3 of the License, or
12  any later version.
13 
14  PIPS is distributed in the hope that it will be useful, but WITHOUT ANY
15  WARRANTY; without even the implied warranty of MERCHANTABILITY or
16  FITNESS FOR A PARTICULAR PURPOSE.
17 
18  See the GNU General Public License for more details.
19 
20  You should have received a copy of the GNU General Public License
21  along with PIPS. If not, see <http://www.gnu.org/licenses/>.
22 
23 */
24 #ifdef HAVE_CONFIG_H
25  #include "pips_config.h"
26 #endif
27 
28 #include <stdio.h>
29 #include <stdlib.h>
30 
31 #include "genC.h"
32 
33 typedef void * void_star;
34 /* typedef void * vertex; */
35 typedef void * arc_label;
36 typedef void * vertex_label;
37 typedef void * db_void;
38 typedef void * operator_id_sons;
39 
40 #include "linear.h"
41 #include "matrice.h"
42 
43 #include "specs.h"
44 #include "all_newgen_headers.h"
45 
46 #include "newgen.h"
47 
49 {
50  /* Read NewGen specification file
51  */
53 
54  /* Initialise external functions...
55  * re-entry in newgen because of the graph stuff...
56  */
58  (void* (*)()) gen_read,
59  (void (*)(FILE*, void*)) gen_write,
60  (void (*)(void*)) gen_free,
61  (void* (*)(void*)) gen_copy_tree_with_sharing,
62  (int (*)(void*)) gen_allocated_memory);
63 
65  (void* (*)()) gen_read,
66  (void (*)(FILE*, void*)) gen_write,
67  (void (*)()) gen_free,
68  (void* (*)()) gen_copy_tree_with_sharing,
69  (int (*)()) gen_allocated_memory);
70 
72  (void* (*)()) polynome_gen_read,
73  (void (*)()) polynome_gen_write,
74  (void (*)()) polynome_gen_free,
75  (void* (*)()) polynome_gen_copy_tree,
76  (int (*)()) polynome_gen_allocated_memory);
77 
79  (void* (*)()) vect_gen_read,
80  (void (*)()) vect_gen_write,
81  (void (*)()) vect_gen_free,
82  (void* (*)()) vect_gen_copy_tree,
83  (int (*)()) vect_gen_allocated_memory);
84 
86  (void* (*)()) sc_gen_read,
87  (void (*)()) sc_gen_write,
88  (void (*)()) sc_gen_free,
89  (void* (*)()) sc_gen_copy_tree,
90  (int (*)()) sc_gen_allocated_memory);
91 
93  (void* (*)()) gen_core_NULL,
94  (void (*)()) gen_core,
95  (void (*)()) free,
96  (void* (*)()) gen_core_NULL,
97  (int (*)()) NULL); /* can't get the size... FC */
98 
100  (void* (*)()) gen_core_NULL,
101  (void (*)()) gen_core,
102  (void (*)()) sg_rm,
103  (void* (*)()) sg_dup,
104  (int (*)()) NULL); /* can't get the size... FC */
105 
107  (void* (*)()) gen_core_NULL,
108  (void (*)()) gen_core,
109  (void (*)()) gen_null,
110  (void* (*)()) gen_identity,
111  (int (*)()) gen_false);
112 
113  /* added because newgen lacks support for hash maps with integer keys */
115  (void* (*)()) gen_NULL, /* read */
116  (void (*)()) gen_null, /* write */
117  (void (*)()) gen_null, /* free */
118  (void* (*)()) gen_NULL, /* copy */
119  (int (*)()) gen_true); /* size */
120 
121  /* do nothing! */
123  (void* (*)()) gen_NULL, /* read */
124  (void (*)()) gen_null, /* write */
125  (void (*)()) gen_null, /* free */
126  (void* (*)()) gen_NULL, /* copy */
127  (int (*)()) gen_true); /* size */
128 }
#define PPOLYNOME_NEWGEN_EXTERNAL
Definition: complexity_ri.h:20
#define PVECTEUR_NEWGEN_EXTERNAL
Definition: compsec.h:27
#define PTSG_NEWGEN_EXTERNAL
Definition: dg.h:34
#define PSYSTEME_NEWGEN_EXTERNAL
Definition: effects.h:48
void gen_free(gen_chunk *obj)
version without shared_pointers.
Definition: genClib.c:992
gen_chunk * gen_copy_tree_with_sharing(gen_chunk *obj)
for re-entry only in gen_copy_tree...
Definition: genClib.c:1442
void gen_init_external(int which, void *(*read)(FILE *, int(*)(void)), void(*write)(FILE *, void *), void(*free)(void *), void *(*copy)(void *), int(*allocated_memory)(void *))
GEN_INIT_EXTERNAL defines entry points for free, read and write functions of external types.
Definition: genClib.c:2276
gen_chunk * gen_read(FILE *file)
GEN_READ reads any object from the FILE stream.
Definition: genClib.c:2323
void gen_read_spec(char *spec,...)
Definition: genClib.c:2218
int gen_allocated_memory(gen_chunk *obj)
re-entry is automatic for this function.
Definition: genClib.c:2690
void gen_write(FILE *fd, gen_chunk *obj)
GEN_WRITE writes the OBJect on the stream FD.
Definition: genClib.c:1745
void free(void *)
#define ARC_LABEL_NEWGEN_EXTERNAL
Definition: graph.h:21
#define VERTEX_LABEL_NEWGEN_EXTERNAL
Definition: graph.h:13
void * gen_NULL(__attribute__((unused)) void *unused)
idem with a void* return
Definition: genClib.c:2764
void * gen_core_NULL(__attribute__((unused)) void *p)
Definition: genClib.c:2827
bool gen_false(__attribute__((unused)) gen_chunk *unused)
Return false and ignore the argument.
Definition: genClib.c:2796
void gen_core(__attribute__((unused)) void *p)
Abort when called.
Definition: genClib.c:2822
void gen_null(__attribute__((unused)) void *unused)
Ignore the argument.
Definition: genClib.c:2752
bool gen_true(__attribute__((unused)) gen_chunk *unused)
Return true and ignore the argument.
Definition: genClib.c:2780
void * gen_identity(const void *x)
Just return the argument.
Definition: genClib.c:2807
void * operator_id_sons
Definition: newgen.c:38
void * db_void
Definition: newgen.c:37
void initialize_newgen()
cproto-generated files
Definition: newgen.c:48
void * arc_label
typedef void * vertex;
Definition: newgen.c:35
void * vertex_label
Definition: newgen.c:36
void * void_star
Definition: newgen.c:33
Pvecteur vect_gen_copy_tree(Pvecteur)
Definition: Pvecteur.c:163
void vect_gen_write(FILE *, Pvecteur)
Pvecteur.c.
Definition: Pvecteur.c:108
int sc_gen_allocated_memory(Psysteme)
Definition: Psc.c:208
int polynome_gen_allocated_memory(Ppolynome)
Definition: Ppolynome.c:168
Pvecteur vect_gen_read(FILE *, int(*)(void))
void sc_gen_free(Psysteme)
Definition: Psc.c:198
int vect_gen_allocated_memory(Pvecteur)
Definition: Pvecteur.c:168
void vect_gen_free(Pvecteur)
Definition: Pvecteur.c:158
void polynome_gen_free(Ppolynome)
Definition: Ppolynome.c:148
void polynome_gen_write(FILE *, Ppolynome)
Definition: Ppolynome.c:97
Ppolynome polynome_gen_read(FILE *, int(*)(void))
Ppolynome polynome_gen_copy_tree(Ppolynome)
Definition: Ppolynome.c:154
Psysteme sc_gen_copy_tree(Psysteme)
Definition: Psc.c:203
void sc_gen_write(FILE *, Psysteme)
Psc.c.
Definition: Psc.c:82
Psysteme sc_gen_read(FILE *, int(*)(void))
#define DB_VOID_NEWGEN_EXTERNAL
#define OPERATOR_ID_SONS_NEWGEN_EXTERNAL
Definition: sac_private.h:48
Ptsg sg_dup(Ptsg sg_in)
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(Ptsg sg)
void sg_rm(Ptsg sg): liberation de l'espace memoire occupe par un systeme generateur
Definition: sg.c:249
#define ALL_SPECS
Definition: specs.h:1
#define MATRICE_NEWGEN_EXTERNAL
Definition: tiling.h:21
#define VOID_STAR_NEWGEN_EXTERNAL