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_FLATTENING_MASTER_COMPILE_FLATTENER_H__
00040 #define __NUSMV_CORE_COMPILE_FLATTENING_MASTER_COMPILE_FLATTENER_H__
00041
00042
00043 #include "nusmv/core/node/MasterNodeWalker.h"
00044 #include "nusmv/core/compile/symb_table/SymbTable.h"
00045 #include "nusmv/core/utils/defs.h"
00046
00053 typedef struct MasterCompileFlattener_TAG* MasterCompileFlattener_ptr;
00054
00055
00062 typedef enum MasterCompileFlattener_def_mode_type_TAG {
00063 Flattener_Get_Def_Mode,
00064 Flattener_Expand_Def_Mode
00065 } MasterCompileFlattener_def_mode;
00066
00073 #define MASTER_COMPILE_FLATTENER(self) \
00074 ((MasterCompileFlattener_ptr) self)
00075
00081 #define MASTER_COMPILE_FLATTENER_CHECK_INSTANCE(self) \
00082 (nusmv_assert(MASTER_COMPILE_FLATTENER(self) != MASTER_COMPILE_FLATTENER(NULL)))
00083
00084
00085
00088
00089
00090
00091
00100 MasterCompileFlattener_ptr
00101 MasterCompileFlattener_create(const NuSMVEnv_ptr env);
00102
00111 void MasterCompileFlattener_destroy(MasterCompileFlattener_ptr self);
00112
00121 node_ptr
00122 MasterCompileFlattener_flatten(MasterCompileFlattener_ptr self,
00123 SymbTable_ptr symb_table,
00124 node_ptr sexp,
00125 node_ptr context);
00126
00135 node_ptr
00136 MasterCompileFlattener_flatten_expand_define(MasterCompileFlattener_ptr self,
00137 SymbTable_ptr symb_table,
00138 node_ptr sexp,
00139 node_ptr context);
00140
00153 node_ptr
00154 MasterCompileFlattener_get_definition(MasterCompileFlattener_ptr self,
00155 SymbTable_ptr symb_table,
00156 node_ptr sexp,
00157 MasterCompileFlattener_def_mode mode);
00158
00166 void
00167 MasterCompileFlattener_remove_define_info(MasterCompileFlattener_ptr self,
00168 SymbTable_ptr symb_table,
00169 node_ptr name);
00170
00175 #endif