PIPS
pipsdbm.h
Go to the documentation of this file.
1 /* Warning! Do not modify this file that is automatically generated! */
2 /* Modify src/Libs/pipsdbm/pipsdbm-local.h instead, to add your own modifications. */
3 
4 /* header file built by cproto */
5 
6 #ifndef pipsdbm_header_included
7 #define pipsdbm_header_included
8 /* pipsdbm-local.h */
9 /*
10 
11  $Id: pipsdbm-local.h 23065 2016-03-02 09:05:50Z coelho $
12 
13  Copyright 1989-2016 MINES ParisTech
14 
15  This file is part of PIPS.
16 
17  PIPS is free software: you can redistribute it and/or modify it
18  under the terms of the GNU General Public License as published by
19  the Free Software Foundation, either version 3 of the License, or
20  any later version.
21 
22  PIPS 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 General Public License for more details.
27 
28  You should have received a copy of the GNU General Public License
29  along with PIPS. If not, see <http://www.gnu.org/licenses/>.
30 
31 */
32 #include "linear.h"
33 #include "resources.h"
34 
35 #define PIPSDBM_DEBUG_LEVEL "PIPSDBM_DEBUG_LEVEL"
36 
37 #define PROGRAM_RESOURCE_OWNER ""
38 
39 #define WORKSPACE_TMP_SPACE "Tmp"
40 #define WORKSPACE_SRC_SPACE "Src"
41 #define WORKSPACE_PROGRAM_SPACE "Program"
42 #define WORKSPACE_METADATA_SPACE "Metadata"
43 /* Name of the file containing the names of the main procedures
44  *
45  * There may be more than one in Fortran. It is simpler in C, because
46  * the main procedure is always called "main" and we cannot have more
47  * than one without a name conflict.
48  */
49 #define MAIN_FILE_NAMES "PROGRAM.main"
50 
51 /* symbols exported by parser / lexer */
52 extern FILE *genread_in;
53 extern int genread_input(void);
54 
55 /* conform to old interface.
56  */
57 
58 /** Put a memory resource into the current workspace database
59 
60  @ingroup pipsdbm
61 
62  This function allows to update a memory resource already available.
63 
64  @param rname is a resource name, such as DBR_CODE for the code of a
65  module. The construction of these aliases are DBB_ + the uppercased
66  name of a resource defined in pipsmake-rc.tex. They are defined
67  automatically in include/resources.h
68 
69  @param oname is the resource owner name, typically a module name.
70 
71  @param res_val is an opaque pointer to the resource to be
72  stored. Methods defined in methods.h will know how to deal with.
73 */
74 #define DB_PUT_MEMORY_RESOURCE(res_name, own_name, res_val) \
75  db_put_or_update_memory_resource(res_name, own_name, (void*) res_val, true)
76 
77 /** Put a file resource into the current workspace database
78 
79  @ingroup pipsdbm
80 
81  This function allows to update a file resource already available.
82 
83  @param rname is a resource name, such as DBR_CODE for the code of a
84  module. The construction of these aliases are DBB_ + the uppercased
85  name of a resource defined in pipsmake-rc.tex. They are defined
86  automatically in include/resources.h
87 
88  @param oname is the resource owner name, typically a module name.
89 
90  @param res_val is an opaque pointer to the resource to be
91  stored. Methods defined in methods.h will know how to deal with.
92 */
93 #define DB_PUT_FILE_RESOURCE DB_PUT_MEMORY_RESOURCE
94 
95 /** Put a new file resource into the current workspace database
96 
97  @ingroup pipsdbm
98 
99  This function disallows to update a resource already available.
100 
101  @param rname is a resource name, such as DBR_CODE for the code of a
102  module. The construction of these aliases are DBB_ + the uppercased
103  name of a resource defined in pipsmake-rc.tex. They are defined
104  automatically in include/resources.h
105 
106  @param oname is the resource owner name, typically a module name.
107 
108  @param res_val is an opaque pointer to the resource to be
109  stored. Methods defined in methods.h will know how to deal with.
110 */
111 #define DB_PUT_NEW_FILE_RESOURCE(res_name, own_name, res_val) \
112  db_put_or_update_memory_resource(res_name, own_name, (void*) res_val, false)
113 
114 #define db_get_file_resource db_get_memory_resource
115 #define db_unput_a_resource(r,o) db_delete_resource(r,o)
116 #define build_pgmwd db_get_workspace_directory_name
117 
118 #define db_make_subdirectory(n) free(db_get_directory_name_for_module(n))
119 
120 #include "newgen.h" /* ??? statement_mapping */
121 /* cproto-generated files */
122 /* database.c */
123 extern void db_create_pips_database(void);
124 extern bool db_open_pips_database(FILE */*fd*/);
125 extern void db_save_pips_database(FILE */*fd*/);
126 extern void db_close_pips_database(void);
127 extern void db_reset_pips_database_if_necessary(void);
128 extern void dump_all_db_resource_status(FILE */*file*/, string /*where*/);
129 extern void db_delete_resource(const char */*rname*/, const char */*oname*/);
130 extern bool db_update_time(const char */*rname*/, const char */*oname*/);
131 extern void db_print_all_required_resources(FILE */*file*/);
132 extern void db_clean_all_required_resources(void);
133 extern bool db_resource_required_or_available_p(const char */*rname*/, const char */*oname*/);
134 extern bool db_resource_is_required_p(const char */*rname*/, const char */*oname*/);
135 extern bool db_resource_p(const char */*rname*/, const char */*oname*/);
136 extern bool db_touch_resource(const char */*rname*/, const char */*oname*/);
137 extern int db_time_of_resource(const char */*rname*/, const char */*oname*/);
138 extern string db_get_resource_id(const char */*rname*/, const char */*oname*/);
139 extern string db_get_memory_resource(const char */*rname*/, const char */*oname*/, bool /*pure*/);
140 extern void db_set_resource_as_required(const char */*rname*/, const char */*oname*/);
141 extern void db_put_or_update_memory_resource(const char */*rname*/, const char */*oname*/, void */*p*/, bool /*update_is_ok*/);
142 extern void db_invalidate_memory_resource(const char */*rname*/, const char */*oname*/);
143 extern int db_unput_resources(const char */*rname*/);
144 extern list db_retrieve_resources(const char */*rname*/);
145 extern string db_resource_name(void */*dbr*/);
146 extern string db_resource_owner_name(void */*dbr*/);
147 extern void db_save_and_free_memory_resource_if_any(const char */*rname*/, const char */*oname*/, bool /*do_free*/);
148 extern void db_delete_all_resources(void);
149 extern bool db_set_current_module_name(const char */*name*/);
150 extern string db_get_current_module_name(void);
151 extern void db_reset_current_module_name(void);
152 extern int db_delete_obsolete_resources(bool (* /*keep_p*/)(const char *, const char *));
153 extern bool db_module_exists_p(const char */*name*/);
155 extern gen_array_t db_get_module_list(void);
156 extern gen_array_t db_get_function_list(void);
158 /* lowlevel.c */
159 extern const char *dbll_current_module;
160 extern int dbll_number_of_resources(void);
161 extern string dbll_get_ith_resource_name(int /*i*/);
162 extern bool dbll_very_special_resource_p(const char */*rname*/, const char */*oname*/);
163 extern void db_set_current_builder_name(const char */*name*/);
164 extern void db_reset_current_builder_name(void);
165 extern string db_get_current_builder_name(void);
166 extern string db_get_directory_name_for_module(const char */*name*/);
167 extern string db_build_file_resource_name(const char */*rname*/, const char */*oname*/, const char */*suffix*/);
168 extern string get_resource_file_name(const char */*rname*/, const char */*oname*/);
169 extern void dbll_unlink_resource_file(const char */*rname*/, const char */*oname*/, bool /*erroriffailed*/);
170 extern int dbll_stat_local_file(const char */*file_name*/, bool /*okifnotthere*/);
171 extern int dbll_stat_resource_file(const char */*rname*/, const char */*oname*/, bool /*okifnotthere*/);
172 extern void dbll_save_resource(const char */*rname*/, const char */*oname*/, void */*p*/);
173 extern void *dbll_load_resource(const char */*rname*/, const char */*oname*/);
174 extern void dbll_free_resource(const char */*rname*/, const char */*oname*/, void */*p*/);
175 extern bool dbll_check_resource(const char */*rname*/, const char */*oname*/, void */*p*/);
176 extern bool dbll_storable_p(const char */*rname*/);
177 extern void dbll_save_and_free_resource(const char */*rname*/, const char */*oname*/, void */*p*/, bool /*do_free*/);
178 extern bool displayable_file_p(const char */*name*/);
179 extern bool dbll_database_managed_file_p(const char */*name*/);
180 /* workspace.c */
181 extern bool workspace_name_p(const char */*name*/);
182 extern string db_get_current_workspace_name(void);
183 extern string db_get_workspace_directory_name(const char */*name*/);
184 extern string db_get_current_workspace_directory(void);
185 extern int db_inc_logical_time(void);
186 extern int db_get_logical_time(void);
187 extern string db_get_meta_data_directory(void);
188 extern bool workspace_exists_p(const char */*name*/);
189 extern bool workspace_ok_p(const char */*name*/);
190 extern bool db_create_workspace(const char */*name*/);
191 extern void db_checkpoint_workspace(void);
192 extern bool db_close_workspace(bool /*is_quit*/);
193 extern bool db_open_workspace(const char */*name*/);
194 /* externals.c */
195 extern char *pipsdbm_read_entities(FILE */*fd*/);
196 extern void pipsdbm_free_entities(char */*p*/);
197 extern void pipsdbm_write_statement_mapping(FILE */*fd*/, statement_mapping /*h*/);
198 extern hash_table pipsdbm_read_statement_mapping(FILE */*fd*/);
202 extern void pipsdbm_write_statement_function(FILE */*fd*/, gen_chunkp /*map*/);
203 extern gen_chunkp pipsdbm_read_statement_function(FILE */*fd*/);
205 extern void declarations_write(FILE */*f*/, hash_table /*h*/);
206 extern hash_table declarations_read(FILE */*f*/);
207 /* util.c */
208 extern bool some_main_entity_p(void);
209 extern string get_main_entity_name(void);
210 /* misc.c */
211 extern void interrupt_pipsmake_asap(void);
212 extern void dont_interrupt_pipsmake_asap(void);
213 extern bool interrupt_pipsmake_asap_p(void);
214 extern void init_request_timers(void);
215 extern void init_log_timers(void);
216 extern void dbm_start_timer(void);
217 extern void dbm_stop_timer(void);
218 extern void get_string_timers(string */*with_io*/, string */*io*/);
219 extern void get_request_string_timers(string */*global*/, string */*phases*/, string */*dbm*/);
220 extern void init_resource_usage_check(void);
221 extern void add_read_resource(string /*rname*/, string /*oname*/);
222 extern void add_write_resource(string /*rname*/, string /*oname*/);
223 extern void get_logged_resources(set */*sr*/, set */*sw*/);
224 #endif /* pipsdbm_header_included */
string db_get_memory_resource(const char *, const char *, bool)
Return the pointer to the resource, whatever it is.
Definition: database.c:755
gen_array_t db_get_compilation_unit_list(void)
Get an array of all the compilation units of a workspace.
Definition: database.c:1287
gen_array_t db_get_module_list(void)
Get an array of all the modules (functions, procedures and compilation units) of a workspace.
Definition: database.c:1266
bool db_module_exists_p(const char *)
Return whether name is a "valid" module.
Definition: database.c:1129
gen_array_t db_get_function_list(void)
Get an array of all the functions and procedures (not compilation units) of a workspace.
Definition: database.c:1277
void db_put_or_update_memory_resource(const char *, const char *, void *, bool)
Put a resource into the current workspace database.
Definition: database.c:854
bool workspace_exists_p(const char *)
Definition: workspace.c:266
void dbm_stop_timer(void)
accumulate dbm related times for one phase
Definition: misc.c:137
int db_unput_resources(const char *)
Delete all the resources of a given type "rname".
Definition: database.c:915
void dbll_save_and_free_resource(const char *, const char *, void *, bool)
Definition: lowlevel.c:350
void db_invalidate_memory_resource(const char *, const char *)
Definition: database.c:897
bool db_close_workspace(bool)
Definition: workspace.c:367
gen_chunkp pipsdbm_read_statement_function(FILE *)
Should use a higher level pipsdbm_read_statement_mapping() to survive to XML.
Definition: externals.c:271
string db_get_resource_id(const char *, const char *)
some way to identify a resource...
Definition: database.c:704
void dbll_free_resource(const char *, const char *, void *)
Definition: lowlevel.c:313
void * dbll_load_resource(const char *, const char *)
Definition: lowlevel.c:294
void init_request_timers(void)
Functions for timing one request.
Definition: misc.c:106
int db_inc_logical_time(void)
0 means not set...
Definition: workspace.c:107
void dbm_start_timer(void)
Definition: misc.c:131
bool pipsdbm_consistent_statement_function(gen_chunkp)
Definition: externals.c:226
int dbll_stat_resource_file(const char *, const char *, bool)
Definition: lowlevel.c:265
string get_main_entity_name(void)
Return the local name of the main module if it is available, or the local name of any module by defau...
Definition: util.c:63
int db_delete_obsolete_resources(bool(*)(const char *, const char *))
delete all obsolete resources before a close.
Definition: database.c:1076
hash_table declarations_read(FILE *)
Definition: externals.c:345
bool db_touch_resource(const char *, const char *)
touch logical time for resource[owner], possibly behind the back of pipsdbm.
Definition: database.c:538
void db_save_and_free_memory_resource_if_any(const char *, const char *, bool)
Definition: database.c:1013
string db_get_directory_name_for_module(const char *)
returns the allocated and mkdir'ed directory for module name
Definition: lowlevel.c:150
void db_clean_all_required_resources(void)
Definition: database.c:460
void pipsdbm_write_statement_mapping(FILE *, statement_mapping)
Write a statement mapping.
Definition: externals.c:115
void db_print_all_required_resources(FILE *)
Definition: database.c:421
string get_resource_file_name(const char *, const char *)
allocate a full file name for the given resource.
Definition: lowlevel.c:187
void declarations_write(FILE *, hash_table)
Functions to read and write declarations resource, which is a hash table whose key and value are stri...
Definition: externals.c:335
int db_time_of_resource(const char *, const char *)
Definition: database.c:603
FILE * genread_in
symbols exported by parser / lexer
void free_static_control_mapping(statement_mapping)
Modification Dec 11 1995: ne pas utiliser free_static_control car il libere des champs qui appartienn...
Definition: externals.c:318
bool dbll_check_resource(const char *, const char *, void *)
Internal consistency of the resource, not the global consistency wrt other resources and pipsmake rul...
Definition: lowlevel.c:324
void db_reset_current_module_name(void)
Definition: database.c:1064
bool db_open_workspace(const char *)
Definition: workspace.c:380
gen_array_t db_get_module_list_initial_order(void)
Definition: database.c:1151
void get_string_timers(string *, string *)
compute times elapsed since init_log_timers(), i.e.
Definition: misc.c:155
string db_get_current_builder_name(void)
Definition: lowlevel.c:140
void dbll_save_resource(const char *, const char *, void *)
save rname of oname p.
Definition: lowlevel.c:275
void pipsdbm_free_statement_mapping(statement_mapping)
Definition: externals.c:190
bool dbll_storable_p(const char *)
Definition: lowlevel.c:341
void get_request_string_timers(string *, string *, string *)
compute times elapsed since init_request_log_timers(), i.e.
Definition: misc.c:196
string db_get_current_module_name(void)
Also used to check whether set...
Definition: database.c:1059
int dbll_number_of_resources(void)
Definition: lowlevel.c:108
hash_table pipsdbm_read_statement_mapping(FILE *)
Read a statement mapping.
Definition: externals.c:147
void db_reset_current_builder_name(void)
Definition: lowlevel.c:134
void db_delete_resource(const char *, const char *)
Delete a resource.
Definition: database.c:353
int db_get_logical_time(void)
Definition: workspace.c:112
bool dbll_database_managed_file_p(const char *)
returns whether the file is managed within the database.
Definition: lowlevel.c:376
void init_resource_usage_check(void)
init variables
Definition: misc.c:240
bool db_resource_required_or_available_p(const char *, const char *)
from now on we must not know about the database internals?
Definition: database.c:505
void init_log_timers(void)
Functions for timing one phase.
Definition: misc.c:122
string db_get_current_workspace_directory(void)
Definition: workspace.c:96
int dbll_stat_local_file(const char *, bool)
It is impportant that the workspace directory does not appear in the file name so as to allow workspa...
Definition: lowlevel.c:251
void dump_all_db_resource_status(FILE *, string)
Definition: database.c:198
list db_retrieve_resources(const char *)
Retrieve all the db resources of a given resource type, "rname".
Definition: database.c:943
void dont_interrupt_pipsmake_asap(void)
Definition: misc.c:53
void db_create_pips_database(void)
??? statement_mapping
Definition: database.c:109
void db_reset_pips_database_if_necessary(void)
Definition: database.c:155
string db_get_meta_data_directory(void)
Definition: workspace.c:139
bool db_create_workspace(const char *)
Definition: workspace.c:282
bool some_main_entity_p(void)
util.c
Definition: util.c:37
bool db_resource_p(const char *, const char *)
true if exists and in loaded or stored state.
Definition: database.c:524
void db_checkpoint_workspace(void)
Definition: workspace.c:350
bool db_open_pips_database(FILE *)
Definition: database.c:119
int genread_input(void)
void get_logged_resources(set *, set *)
Get the made sets.
Definition: misc.c:268
bool workspace_ok_p(const char *)
Definition: workspace.c:274
void add_read_resource(string, string)
add an element to the read set
Definition: misc.c:251
bool db_set_current_module_name(const char *)
Definition: database.c:1045
void interrupt_pipsmake_asap(void)
misc.c
Definition: misc.c:48
char * pipsdbm_read_entities(FILE *)
externals.c
Definition: externals.c:64
void db_set_resource_as_required(const char *, const char *)
Definition: database.c:797
bool dbll_very_special_resource_p(const char *, const char *)
Definition: lowlevel.c:119
string db_get_current_workspace_name(void)
the function is used to check that there is some current workspace...
Definition: workspace.c:82
string db_build_file_resource_name(const char *, const char *, const char *)
returns an allocated file name for a file resource.
Definition: lowlevel.c:169
void pipsdbm_write_statement_function(FILE *, gen_chunkp)
the stored stuff need be based on the ordering...
Definition: externals.c:245
void db_delete_all_resources(void)
FC: I added this function to clean all resources, hence avoiding to save them.
Definition: database.c:1030
string dbll_get_ith_resource_name(int)
Definition: lowlevel.c:113
string db_resource_name(void *)
To be used for debugging.
Definition: database.c:1000
bool db_update_time(const char *, const char *)
this should really be a put.
Definition: database.c:380
bool pipsdbm_check_statement_mapping(statement_mapping)
a little bit partial, because domain are not checked.
Definition: externals.c:178
void add_write_resource(string, string)
add an element to the write set
Definition: misc.c:260
void dbll_unlink_resource_file(const char *, const char *, bool)
Definition: lowlevel.c:219
bool displayable_file_p(const char *)
rather approximated.
Definition: lowlevel.c:361
bool db_resource_is_required_p(const char *, const char *)
true if exists and in required state.
Definition: database.c:512
void db_close_pips_database(void)
Definition: database.c:150
string db_resource_owner_name(void *)
To be used for debugging.
Definition: database.c:1006
void db_set_current_builder_name(const char *)
Definition: lowlevel.c:128
string db_get_workspace_directory_name(const char *)
returns an allocated string.
Definition: workspace.c:91
void db_save_pips_database(FILE *)
Definition: database.c:137
void pipsdbm_free_entities(char *)
Definition: externals.c:72
bool workspace_name_p(const char *)
workspace.c
Definition: workspace.c:46
const char * dbll_current_module
lowlevel.c
Definition: lowlevel.c:41
bool interrupt_pipsmake_asap_p(void)
Definition: misc.c:58
FI: I do not understand why the type is duplicated at the set level.
Definition: set.c:59
The structure used to build lists in NewGen.
Definition: newgen_list.h:41
A gen_chunk is used to store every object.
Definition: genC.h:58