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_FLATTENER_BASE_PRIVATE_H__
00040 #define __NUSMV_CORE_COMPILE_FLATTENING_FLATTENER_BASE_PRIVATE_H__
00041
00042
00043 #include "nusmv/core/compile/flattening/FlattenerBase.h"
00044 #include "nusmv/core/node/NodeWalker.h"
00045 #include "nusmv/core/node/NodeWalker_private.h"
00046 #include "nusmv/core/utils/utils.h"
00047 #include "nusmv/core/utils/defs.h"
00048
00049
00059 typedef struct FlattenerBase_TAG
00060 {
00061
00062 INHERITS_FROM(NodeWalker);
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072 node_ptr (*flatten) (FlattenerBase_ptr self,
00073 SymbTable_ptr symb_table,
00074 hash_ptr def_hash,
00075 node_ptr sexp,
00076 node_ptr context,
00077 MasterCompileFlattener_def_mode mode);
00078
00079
00080
00081 } FlattenerBase;
00082
00083
00084
00085
00086
00093 #define _THROW(sexp, symb_table, def_hash, context, mode) \
00094 flattener_base_throw_flatten(FLATTENER_BASE(self), symb_table, def_hash, \
00095 sexp, context, mode)
00096
00097
00098
00099
00100
00115 FlattenerBase_ptr
00116 FlattenerBase_create(const NuSMVEnv_ptr env, const char* name, int low, size_t num);
00117
00126 void flattener_base_init(FlattenerBase_ptr self, const NuSMVEnv_ptr env,
00127 const char* name, int low, size_t num,
00128 boolean can_handle_null);
00129
00136 void flattener_base_deinit(FlattenerBase_ptr self);
00137
00144 node_ptr
00145 flattener_base_flatten(FlattenerBase_ptr self,
00146 SymbTable_ptr symb_table,
00147 hash_ptr def_hash,
00148 node_ptr sexp,
00149 node_ptr context,
00150 MasterCompileFlattener_def_mode mode);
00151
00159 node_ptr
00160 flattener_base_throw_flatten(FlattenerBase_ptr self,
00161 SymbTable_ptr symb_table,
00162 hash_ptr def_hash,
00163 node_ptr sexp,
00164 node_ptr context,
00165 MasterCompileFlattener_def_mode mode);
00166
00167
00168 #endif