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_ENC_BOOL_BOOL_ENC_H__
00040 #define __NUSMV_CORE_ENC_BOOL_BOOL_ENC_H__
00041
00042 #include "nusmv/core/enc/bool/BitValues.h"
00043 #include "nusmv/core/enc/base/BaseEnc.h"
00044
00045 #include "nusmv/core/compile/symb_table/SymbTable.h"
00046 #include "nusmv/core/utils/NodeList.h"
00047 #include "nusmv/core/node/node.h"
00048 #include "nusmv/core/set/set.h"
00049
00050 #include "nusmv/core/utils/utils.h"
00051 #include "nusmv/core/utils/object.h"
00052
00059 typedef struct BoolEnc_TAG* BoolEnc_ptr;
00060
00067 #define BOOL_ENC(self) \
00068 ((BoolEnc_ptr) self)
00069
00075 #define BOOL_ENC_CHECK_INSTANCE(self) \
00076 (nusmv_assert(BOOL_ENC(self) != BOOL_ENC(NULL)))
00077
00078
00079
00082
00083
00084
00085
00094 BoolEnc_ptr BoolEnc_create(SymbTable_ptr symb_table);
00095
00104 VIRTUAL void BoolEnc_destroy(BoolEnc_ptr self);
00105
00115 boolean
00116 BoolEnc_is_var_bit(const BoolEnc_ptr self, node_ptr name);
00117
00125 boolean
00126 BoolEnc_is_var_scalar(const BoolEnc_ptr self, node_ptr name);
00127
00138 node_ptr
00139 BoolEnc_get_scalar_var_from_bit(const BoolEnc_ptr self, node_ptr name);
00140
00151 node_ptr
00152 BoolEnc_make_var_bit(const BoolEnc_ptr self, node_ptr name, int index);
00153
00162 int
00163 BoolEnc_get_index_from_bit(const BoolEnc_ptr self, node_ptr name);
00164
00172 NodeList_ptr
00173 BoolEnc_get_var_bits(const BoolEnc_ptr self, node_ptr name);
00174
00181 node_ptr
00182 BoolEnc_get_var_encoding(const BoolEnc_ptr self, node_ptr name);
00183
00218 node_ptr
00219 BoolEnc_get_values_bool_encoding(const BoolEnc_ptr self,
00220 node_ptr values,
00221 Set_t* bits);
00222
00230 const char*
00231 BoolEnc_scalar_layer_to_bool_layer(const BoolEnc_ptr self,
00232 const char* layer_name);
00233
00244 boolean
00245 BoolEnc_is_bool_layer(const char* layer_name);
00246
00257 node_ptr
00258 BoolEnc_get_value_from_var_bits(const BoolEnc_ptr self,
00259 const BitValues_ptr bit_values);
00260
00290 node_ptr
00291 BoolEnc_get_var_mask(const BoolEnc_ptr self, node_ptr name);
00292
00297 #endif