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
00038 #ifndef __NUSMV_CORE_PROP_PROP_PRIVATE_H__
00039 #define __NUSMV_CORE_PROP_PROP_PRIVATE_H__
00040
00041
00042 #if HAVE_CONFIG_H
00043 #include "nusmv-config.h"
00044 #endif
00045
00046 #include "nusmv/core/prop/Prop.h"
00047
00048 #include "nusmv/core/utils/EnvObject.h"
00049 #include "nusmv/core/utils/EnvObject_private.h"
00050 #include "nusmv/core/utils/utils.h"
00051
00052
00089
00090
00091
00097 typedef Expr_ptr (*Prop_get_expr_method)(const Prop_ptr);
00098
00104 typedef const char* (*Prop_get_type_as_string_method)(const Prop_ptr);
00105
00111 typedef void (*Prop_print_method)(const Prop_ptr, OStream_ptr);
00112 typedef void (*Prop_print_db_method)(const Prop_ptr, OStream_ptr);
00113 typedef void (*Prop_verify_method)(Prop_ptr);
00114
00120 typedef Prop_ptr (*Prop_convert_to_invar_method)(Prop_ptr);
00121
00122 typedef void (*Prop_set_environment_fsms_method)(const NuSMVEnv_ptr env, Prop_ptr);
00123
00124
00125 typedef struct Prop_TAG
00126 {
00127
00128 INHERITS_FROM(EnvObject);
00129
00130
00131
00132
00133 unsigned int index;
00134 Expr_ptr prop;
00135
00136
00137 node_ptr name;
00138
00139 Set_t cone;
00140 Prop_Type type;
00141 Prop_Status status;
00142 int number;
00143 int trace;
00144
00145 FsmBuilder_ptr fsm_mgr;
00146
00147 SexpFsm_ptr scalar_fsm;
00148 BoolSexpFsm_ptr bool_fsm;
00149 BddFsm_ptr bdd_fsm;
00150 BeFsm_ptr be_fsm;
00151
00152
00153
00154
00155
00156 Prop_get_expr_method get_expr;
00157
00158 Prop_get_type_as_string_method get_type_as_string;
00159
00160 Prop_print_method print;
00161
00162 Prop_print_method print_truncated;
00163
00164 Prop_print_db_method print_db_tabular;
00165
00166 Prop_print_db_method print_db_xml;
00167
00168 Prop_verify_method verify;
00169 Prop_convert_to_invar_method convert_to_invar;
00170
00171
00172 Prop_set_environment_fsms_method set_environment_fsms;
00173
00174 } Prop;
00175
00176
00177
00178
00179
00180
00181
00190 void prop_init(Prop_ptr self, const NuSMVEnv_ptr env);
00191
00200 void prop_deinit(Prop_ptr self);
00201
00206 Expr_ptr prop_get_expr(const Prop_ptr self);
00211 const char* prop_get_type_as_string(const Prop_ptr self);
00212
00217 void prop_print(const Prop_ptr self, OStream_ptr file);
00222 void prop_print_truncated(const Prop_ptr self, OStream_ptr file);
00223
00228 void prop_print_db_tabular(const Prop_ptr self, OStream_ptr file);
00233 void prop_print_db_xml(const Prop_ptr self, OStream_ptr file);
00234
00239 void prop_verify(Prop_ptr self);
00240
00245 void prop_set_scalar_sexp_fsm(Prop_ptr self, SexpFsm_ptr fsm,
00246 const boolean duplicate);
00251 void prop_set_bool_sexp_fsm(Prop_ptr self, BoolSexpFsm_ptr fsm,
00252 const boolean duplicate);
00257 void prop_set_bdd_fsm(Prop_ptr self, BddFsm_ptr fsm,
00258 const boolean duplicate);
00263 void prop_set_be_fsm(Prop_ptr self, BeFsm_ptr fsm,
00264 const boolean duplicate);
00265
00271 void prop_set_environment_fsms(const NuSMVEnv_ptr env, Prop_ptr prop);
00272
00279 Prop_ptr prop_convert_to_invar(Prop_ptr self);
00280
00281
00282 #endif