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
00048 #ifndef __NUSMV_CORE_COMPILE_FLAT_HIERARCHY_H__
00049 #define __NUSMV_CORE_COMPILE_FLAT_HIERARCHY_H__
00050
00051 #include "nusmv/core/node/node.h"
00052 #include "nusmv/core/set/set.h"
00053 #include "nusmv/core/compile/symb_table/SymbTable.h"
00054 #include "nusmv/core/utils/assoc.h"
00055
00056
00057
00058
00059
00066 typedef struct FlatHierarchy* FlatHierarchy_ptr;
00067
00068
00069
00070
00071
00077 #define FLAT_HIERARCHY(x) ((FlatHierarchy_ptr) x)
00078
00084 #define FLAT_HIERARCHY_CHECK_INSTANCE(x) \
00085 ( nusmv_assert(FLAT_HIERARCHY(x) != FLAT_HIERARCHY(NULL)) )
00086
00087
00088
00089
00090
00091
00092
00126 FlatHierarchy_ptr FlatHierarchy_create(SymbTable_ptr st);
00127
00136 FlatHierarchy_ptr
00137 FlatHierarchy_create_from_members(SymbTable_ptr st,
00138 node_ptr init,
00139 node_ptr invar,
00140 node_ptr trans,
00141 node_ptr input,
00142 node_ptr justice,
00143 node_ptr compassion);
00144
00154 void FlatHierarchy_destroy(FlatHierarchy_ptr self);
00155
00161 FlatHierarchy_ptr
00162 FlatHierarchy_copy(const FlatHierarchy_ptr self);
00163
00172 void FlatHierarchy_mergeinto(FlatHierarchy_ptr self,
00173 const FlatHierarchy_ptr other);
00174
00175
00176
00177
00178
00185 NuSMVEnv_ptr
00186 FlatHierarchy_get_environment(const FlatHierarchy_ptr self);
00187
00194 SymbTable_ptr
00195 FlatHierarchy_get_symb_table(const FlatHierarchy_ptr self);
00196
00203 void
00204 FlatHierarchy_set_symb_table(const FlatHierarchy_ptr self,
00205 SymbTable_ptr symb_table);
00206
00207
00208
00214 node_ptr FlatHierarchy_get_init(FlatHierarchy_ptr cmp);
00215
00221 void FlatHierarchy_set_init(FlatHierarchy_ptr cmp, node_ptr n);
00222
00228 void FlatHierarchy_add_init(FlatHierarchy_ptr cmp, node_ptr n);
00229
00235 node_ptr FlatHierarchy_get_invar(FlatHierarchy_ptr cmp);
00236
00242 void FlatHierarchy_set_invar(FlatHierarchy_ptr cmp, node_ptr n);
00243
00249 void FlatHierarchy_add_invar(FlatHierarchy_ptr cmp, node_ptr n);
00250
00256 node_ptr FlatHierarchy_get_trans(FlatHierarchy_ptr cmp);
00257
00263 void FlatHierarchy_set_trans(FlatHierarchy_ptr cmp, node_ptr n);
00264
00270 void FlatHierarchy_add_trans(FlatHierarchy_ptr cmp, node_ptr n);
00271
00277 node_ptr FlatHierarchy_get_input(FlatHierarchy_ptr cmp);
00278
00284 void FlatHierarchy_set_input(FlatHierarchy_ptr cmp, node_ptr n);
00285
00291 node_ptr FlatHierarchy_get_assign(FlatHierarchy_ptr cmp);
00292
00298 void
00299 FlatHierarchy_set_assign(FlatHierarchy_ptr cmp, node_ptr n);
00300
00301
00302
00303
00309 node_ptr FlatHierarchy_get_justice(FlatHierarchy_ptr cmp);
00310
00316 void
00317 FlatHierarchy_set_justice(FlatHierarchy_ptr cmp, node_ptr n);
00318
00324 node_ptr FlatHierarchy_get_compassion(FlatHierarchy_ptr cmp);
00325
00331 void FlatHierarchy_set_compassion(FlatHierarchy_ptr cmp,
00332 node_ptr n);
00333
00339 boolean FlatHierarchy_add_property_name(FlatHierarchy_ptr cmp,
00340 node_ptr name);
00341
00347 node_ptr FlatHierarchy_get_spec(FlatHierarchy_ptr cmp);
00348
00354 void FlatHierarchy_set_spec(FlatHierarchy_ptr cmp, node_ptr n);
00355
00361 node_ptr FlatHierarchy_get_ltlspec(FlatHierarchy_ptr cmp);
00362
00368 void
00369 FlatHierarchy_set_ltlspec(FlatHierarchy_ptr cmp, node_ptr n);
00370
00376 node_ptr FlatHierarchy_get_invarspec(FlatHierarchy_ptr cmp);
00377
00383 void FlatHierarchy_set_invarspec(FlatHierarchy_ptr cmp,
00384 node_ptr n);
00385
00391 node_ptr FlatHierarchy_get_pslspec(FlatHierarchy_ptr cmp);
00392
00398 void
00399 FlatHierarchy_set_pslspec(FlatHierarchy_ptr cmp, node_ptr n);
00400
00406 node_ptr FlatHierarchy_get_compute(FlatHierarchy_ptr cmp);
00407
00413 void
00414 FlatHierarchy_set_compute(FlatHierarchy_ptr cmp, node_ptr n);
00415
00416
00417
00418
00426 Set_t FlatHierarchy_get_vars(FlatHierarchy_ptr cmp);
00427
00436 void FlatHierarchy_add_var(FlatHierarchy_ptr cmp, node_ptr n);
00437
00447 void FlatHierarchy_remove_var(FlatHierarchy_ptr self, node_ptr n);
00448
00460 NodeList_ptr
00461 FlatHierarchy_get_ordered_vars(const FlatHierarchy_ptr self,
00462 hash_ptr* outbound_edges);
00463
00469 node_ptr FlatHierarchy_get_preds(FlatHierarchy_ptr cmp);
00470
00476 void FlatHierarchy_add_pred(FlatHierarchy_ptr cmp, node_ptr n);
00477
00483 void FlatHierarchy_set_pred(FlatHierarchy_ptr cmp, node_ptr n);
00484
00490 node_ptr FlatHierarchy_get_mirrors(FlatHierarchy_ptr cmp);
00491
00497 void FlatHierarchy_add_mirror(FlatHierarchy_ptr cmp, node_ptr n);
00498
00504 void FlatHierarchy_set_mirror(FlatHierarchy_ptr cmp, node_ptr n);
00505
00506
00512 node_ptr FlatHierarchy_get_property_patterns(FlatHierarchy_ptr cmp);
00513
00519 void FlatHierarchy_add_property_pattern(FlatHierarchy_ptr cmp, node_ptr n);
00520
00526 void FlatHierarchy_set_property_patterns(FlatHierarchy_ptr cmp, node_ptr n);
00527
00528
00529
00530
00531
00532
00533
00534
00535
00536
00551 node_ptr FlatHierarchy_lookup_assign(FlatHierarchy_ptr self,
00552 node_ptr name);
00553
00567 void FlatHierarchy_insert_assign(FlatHierarchy_ptr self,
00568 node_ptr name,
00569 node_ptr assign);
00570
00591 node_ptr FlatHierarchy_lookup_constrains(FlatHierarchy_ptr self,
00592 node_ptr name);
00593
00614 void FlatHierarchy_add_constrains(FlatHierarchy_ptr self,
00615 node_ptr name,
00616 node_ptr expr);
00617
00628 node_ptr
00629 FlatHierarchy_lookup_constant_constrains(FlatHierarchy_ptr self,
00630 int type);
00631
00643 void FlatHierarchy_add_constant_constrains(FlatHierarchy_ptr self,
00644 node_ptr expr,
00645 int type);
00646
00663 void
00664 FlatHierarchy_calculate_vars_constrains(FlatHierarchy_ptr self);
00665
00677 hash_ptr
00678 FlatHierarchy_get_var_expr_associations(FlatHierarchy_ptr self);
00679
00693 void
00694 FlatHierarchy_set_var_expr_associations(FlatHierarchy_ptr self,
00695 hash_ptr h);
00696
00712 void
00713 FlatHierarchy_clear_var_expr_associations(FlatHierarchy_ptr self);
00714
00725 hash_ptr
00726 FlatHierarchy_get_constants_associations(FlatHierarchy_ptr self);
00727
00738 void
00739 FlatHierarchy_set_constants_associations(FlatHierarchy_ptr self,
00740 hash_ptr h);
00741
00750 void
00751 FlatHierarchy_clear_constants_associations(FlatHierarchy_ptr self);
00752
00753
00754
00755
00763 void FlatHierarchy_self_check(const FlatHierarchy_ptr self);
00764
00771 void FlatHierarchy_type_check(FlatHierarchy_ptr self);
00772
00773
00774 #endif