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_TRANS_BDD_CLUSTER_LIST_H__
00039 #define __NUSMV_CORE_TRANS_BDD_CLUSTER_LIST_H__
00040
00041 #include "nusmv/core/trans/bdd/Cluster.h"
00042 #include "nusmv/core/dd/dd.h"
00043 #include "nusmv/core/node/node.h"
00044
00051 typedef struct ClusterList_TAG* ClusterList_ptr;
00052
00058 typedef node_ptr ClusterListIterator_ptr;
00059
00065 #define CLUSTER_LIST(x) \
00066 ((ClusterList_ptr) x)
00067
00073 #define CLUSTER_LIST_CHECK_INSTANCE(x) \
00074 (nusmv_assert(CLUSTER_LIST(x) != CLUSTER_LIST(NULL)))
00075
00081 #define CLUSTER_LIST_ITERATOR(x) \
00082 ((ClusterListIterator_ptr) x)
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092 #undef CLUSTER_LIST_PREPEND_CLUSTER
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00108 #define MHS_AFFINITY_DEFINITION
00109
00110
00111
00119 ClusterList_ptr ClusterList_create(DDMgr_ptr dd);
00120
00128 void ClusterList_destroy(ClusterList_ptr self);
00129
00136 ClusterList_ptr ClusterList_copy(const ClusterList_ptr self);
00137
00144 ClusterListIterator_ptr
00145 ClusterList_begin(const ClusterList_ptr self);
00146
00153 DDMgr_ptr
00154 ClusterList_get_dd_manager(const ClusterList_ptr self);
00155
00163 Cluster_ptr
00164 ClusterList_get_cluster(const ClusterList_ptr self,
00165 const ClusterListIterator_ptr iter);
00166
00174 void ClusterList_set_cluster(ClusterList_ptr self,
00175 const ClusterListIterator_ptr iter,
00176 Cluster_ptr cluster);
00177
00184 int ClusterList_length(const ClusterList_ptr self);
00185
00192 void
00193 ClusterList_prepend_cluster(ClusterList_ptr self, Cluster_ptr cluster);
00194
00202 void
00203 ClusterList_append_cluster(ClusterList_ptr self, Cluster_ptr cluster);
00204
00211 ClusterListIterator_ptr
00212 ClusterListIterator_next(const ClusterListIterator_ptr self);
00213
00220 boolean
00221 ClusterListIterator_is_end(const ClusterListIterator_ptr self);
00222
00229 void ClusterList_reverse(ClusterList_ptr self);
00230
00239 int
00240 ClusterList_remove_cluster(ClusterList_ptr self, Cluster_ptr cluster);
00241
00249 ClusterList_ptr
00250 ClusterList_apply_monolithic(const ClusterList_ptr self);
00251
00259 ClusterList_ptr
00260 ClusterList_apply_threshold(const ClusterList_ptr self,
00261 const ClusterOptions_ptr cl_options);
00262
00280 ClusterList_ptr
00281 ClusterList_apply_iwls95_partition(const ClusterList_ptr self,
00282 bdd_ptr state_vars_cube,
00283 bdd_ptr input_vars_cube,
00284 bdd_ptr next_state_vars_cube,
00285 const ClusterOptions_ptr cl_options);
00286
00298 void
00299 ClusterList_apply_synchronous_product(ClusterList_ptr self,
00300 const ClusterList_ptr other);
00301
00308 bdd_ptr
00309 ClusterList_get_monolithic_bdd(const ClusterList_ptr self);
00310
00318 bdd_ptr
00319 ClusterList_get_clusters_cube(const ClusterList_ptr self);
00320
00328 void
00329 ClusterList_build_schedule(ClusterList_ptr self,
00330 bdd_ptr state_vars_cube,
00331 bdd_ptr input_vars_cube);
00332
00340 bdd_ptr
00341 ClusterList_get_image_state(const ClusterList_ptr self, bdd_ptr s);
00342
00350 bdd_ptr
00351 ClusterList_get_image_state_input(const ClusterList_ptr self, bdd_ptr s);
00352
00360 bdd_ptr
00361 ClusterList_get_k_image_state(const ClusterList_ptr self, bdd_ptr s, int k);
00362
00370 bdd_ptr
00371 ClusterList_get_k_image_state_input(const ClusterList_ptr self, bdd_ptr s, int k);
00372
00379 void
00380 ClusterList_print_short_info(const ClusterList_ptr self, FILE* file);
00381
00388 boolean ClusterList_check_equality(const ClusterList_ptr self,
00389 const ClusterList_ptr other);
00390
00410 boolean ClusterList_check_schedule(const ClusterList_ptr self);
00411
00412
00413 #endif