00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00039 #ifndef __NUSMV_CORE_COMPILE_DEPENDENCY_FORMULA_DEPENDENCY_PRIVATE_H__
00040 #define __NUSMV_CORE_COMPILE_DEPENDENCY_FORMULA_DEPENDENCY_PRIVATE_H__
00041
00042
00043 #include "nusmv/core/compile/dependency/FormulaDependency.h"
00044 #include "nusmv/core/node/MasterNodeWalker.h"
00045 #include "nusmv/core/node/MasterNodeWalker_private.h"
00046 #include "nusmv/core/utils/assoc.h"
00047 #include "nusmv/core/utils/defs.h"
00048 #include "nusmv/core/utils/Tuple5.h"
00049
00059 typedef struct FormulaDependency_TAG
00060 {
00061
00062 INHERITS_FROM(MasterNodeWalker);
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073 } FormulaDependency;
00074
00082 #define BUILDING_DEP_SET (Set_t)-10
00083
00089 #define EMPTY_DEP_SET (Set_t)-11
00090
00096 #define NO_DEP_SET (Set_t)-12
00097
00104 #define IS_VALID_SET(set) \
00105 (EMPTY_DEP_SET != set && \
00106 BUILDING_DEP_SET != set && \
00107 NO_DEP_SET != set && \
00108 (Set_t)NULL != set)
00109
00110
00111
00112
00113
00122 void formula_dependency_init(FormulaDependency_ptr self,
00123 const NuSMVEnv_ptr env);
00124
00133 void formula_dependency_deinit(FormulaDependency_ptr self);
00134
00144 Set_t
00145 formula_dependency_get_dependencies(FormulaDependency_ptr self,
00146 SymbTable_ptr symb_table,
00147 node_ptr formula, node_ptr context,
00148 SymbFilterType filter,
00149 boolean preserve_time, int time,
00150 hash_ptr dependencies_hash);
00151
00172 Set_t
00173 formula_dependency_get_definition_dependencies(FormulaDependency_ptr self,
00174 SymbTable_ptr symb_table,
00175 node_ptr formula,
00176 SymbFilterType filter,
00177 boolean preserve_time, int time,
00178 hash_ptr dependencies_hash);
00179
00187 hash_ptr formula_dependency_get_hash(FormulaDependency_ptr self,
00188 SymbTable_ptr symb_table);
00189
00197 void formula_dependency_insert_hash(hash_ptr dep_hash,
00198 node_ptr key,
00199 Set_t value);
00200
00211 void formula_dependency_close_define_hash(hash_ptr dep_hash,
00212 node_ptr key,
00213 Set_t value);
00214
00220 Set_t formula_dependency_lookup_hash(hash_ptr dep_hash,
00221 node_ptr key);
00222
00228 void
00229 formula_dependency_mk_hash_key(node_ptr e, node_ptr c, SymbFilterType filter,
00230 boolean preserve_time, int time,
00231 Tuple5_ptr key);
00232
00233
00234
00235 #endif