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
00047 #ifndef __NUSMV_CORE_UTILS_WORD_NUMBER_H__
00048 #define __NUSMV_CORE_UTILS_WORD_NUMBER_H__
00049
00050
00051 #include "nusmv/core/utils/utils.h"
00052
00059 typedef struct WordNumber_TAG* WordNumber_ptr;
00060
00066 typedef unsigned long long WordNumberValue;
00067
00068
00069
00070
00071
00072
00078 #define WORD_NUMBER(x) \
00079 ((WordNumber_ptr) (x))
00080
00086 #define WORD_NUMBER_CHECK_INSTANCE(x) \
00087 (nusmv_assert(WORD_NUMBER(x) != WORD_NUMBER(NULL)))
00088
00089
00090
00091
00092
00093
00094
00095
00101 void WordNumber_init(NuSMVEnv_ptr env);
00102
00108 void WordNumber_quit(NuSMVEnv_ptr env);
00109
00110
00111
00112
00119 int WordNumber_max_width(void);
00120
00121
00122
00128 unsigned
00132 long long WordNumber_get_unsigned_value(WordNumber_ptr self);
00133
00140 signed
00144 long long WordNumber_get_signed_value(WordNumber_ptr self);
00145
00152 int WordNumber_get_width(WordNumber_ptr self);
00153
00160 boolean WordNumber_get_bit(WordNumber_ptr self, int n);
00161
00168 boolean WordNumber_get_sign(WordNumber_ptr self);
00169
00178 const char* WordNumber_get_parsed_string(WordNumber_ptr self);
00179
00180
00181
00192 int WordNumber_based_print(FILE* output_stream,
00193 WordNumber_ptr self,
00194 int base,
00195 boolean isSigned);
00196
00215 char* WordNumber_to_based_string(WordNumber_ptr self, int base,
00216 boolean isSigned);
00217
00218
00219
00220
00227 boolean WordNumber_is_zero(WordNumber_ptr v);
00228
00234 boolean WordNumber_equal(WordNumber_ptr v1, WordNumber_ptr v2);
00235
00241 boolean WordNumber_not_equal(WordNumber_ptr v1,
00242 WordNumber_ptr v2);
00243
00250 boolean WordNumber_unsigned_less(WordNumber_ptr v1,
00251 WordNumber_ptr v2);
00252
00259 boolean WordNumber_unsigned_less_or_equal(WordNumber_ptr v1,
00260 WordNumber_ptr v2);
00261
00268 boolean WordNumber_unsigned_greater(WordNumber_ptr v1,
00269 WordNumber_ptr v2);
00270
00277 boolean WordNumber_unsigned_greater_or_equal(WordNumber_ptr v1,
00278 WordNumber_ptr v2);
00279
00286 boolean WordNumber_signed_less(WordNumber_ptr v1,
00287 WordNumber_ptr v2);
00288
00295 boolean WordNumber_signed_less_or_equal(WordNumber_ptr v1,
00296 WordNumber_ptr v2);
00297
00304 boolean WordNumber_signed_greater(WordNumber_ptr v1,
00305 WordNumber_ptr v2);
00306
00313 boolean WordNumber_signed_greater_or_equal(WordNumber_ptr v1,
00314 WordNumber_ptr v2);
00315
00321 WordNumber_ptr WordNumber_max(WordNumber_ptr v1,
00322 WordNumber_ptr v2,
00323 boolean isSigned);
00324
00330 WordNumber_ptr WordNumber_min(WordNumber_ptr v1,
00331 WordNumber_ptr v2,
00332 boolean isSigned);
00333
00334 #endif