00001
00037
00038
00039
00040
00041
00042 #ifndef CANDL_H
00043 # define CANDL_H
00044
00045 # define CANDL_RELEASE "0.3.0"
00046 # define CANDL_VERSION "64"
00047 # define CANDL_SUPPORTS_SCOPLIB
00048
00049 # include <piplib/piplib64.h>
00050 # include <candl/options.h>
00051 # include <candl/matrix.h>
00052 # include <candl/statement.h>
00053 # include <candl/program.h>
00054 # include <candl/dependence.h>
00055 # include <candl/violation.h>
00056
00057 # define CANDL_UNSET -1
00058
00059
00060
00061 # define CANDL_RAW 1
00062 # define CANDL_WAR 2
00063 # define CANDL_WAW 3
00064 # define CANDL_RAR 4
00065
00066 # define CANDL_AFFECTATION 1
00067 # define CANDL_P_REDUCTION 2
00068 # define CANDL_M_REDUCTION 3
00069 # define CANDL_T_REDUCTION 4
00070
00071 # define CANDL_EQUAL 1
00072 # define CANDL_POSIT 2
00073 # define CANDL_LATER 3
00074 # define CANDL_NEVER 4
00075
00076 # define CANDL_NB_INFOS 3
00077
00078 # define CANDL_MAX_STRING 2048
00079 # define CANDL_TEMP_OUTPUT "candl.temp"
00080
00081
00082 # define CANDL_max(x,y) ((x) > (y)? (x) : (y))
00083 # define CANDL_min(x,y) ((x) < (y)? (x) : (y))
00084
00085 # define CANDL_FAIL(msg) { fprintf(stderr, "[Candl] " msg "\n"); exit(1); }
00086
00087
00088
00089
00090 #if defined(LINEAR_VALUE_IS_LONGLONG)
00091 #define CANDL_FMT "%4lld "
00092 #elif defined(LINEAR_VALUE_IS_LONG)
00093 #define CANDL_FMT "%4ld "
00094 #else
00095 #define CANDL_FMT "%4s"
00096 #endif
00097
00098
00099
00100
00101 #ifdef LINEAR_VALUE_IS_MP
00102
00103 #define CANDL_init(val) (mpz_init((val)))
00104 #define CANDL_assign(v1,v2) (mpz_set((v1),(v2)))
00105 #define CANDL_set_si(val,i) (mpz_set_si((val),(i)))
00106 #define CANDL_get_si(val) (mpz_get_si((val)))
00107 #define CANDL_clear(val) (mpz_clear((val)))
00108 #define CANDL_print(Dst,fmt,val) { char *str; \
00109 str = mpz_get_str(0,10,(val)); \
00110 fprintf((Dst),(fmt),str); free(str); \
00111 }
00112
00113
00114 #define CANDL_eq(v1,v2) (mpz_cmp((v1),(v2)) == 0)
00115 #define CANDL_ne(v1,v2) (mpz_cmp((v1),(v2)) != 0)
00116
00117
00118 #define CANDL_increment(ref,val) (mpz_add_ui((ref),(val),1))
00119 #define CANDL_decrement(ref,val) (mpz_sub_ui((ref),(val),1))
00120 #define CANDL_subtract(ref,val1,val2) (mpz_sub((ref),(val1),(val2)))
00121 #define CANDL_oppose(ref,val) (mpz_neg((ref),(val)))
00122
00123
00124 #define CANDL_zero_p(val) (mpz_sgn(val) == 0)
00125 #define CANDL_notzero_p(val) (mpz_sgn(val) != 0)
00126
00127
00128
00129
00130 #else
00131
00132 #define CANDL_init(val) ((val) = 0)
00133 #define CANDL_assign(v1,v2) ((v1) = (v2))
00134 #define CANDL_set_si(val,i) ((val) = (Entier)(i))
00135 #define CANDL_get_si(val) ((val))
00136 #define CANDL_clear(val) ((val) = 0)
00137 #define CANDL_print(Dst,fmt,val) (fprintf((Dst),(fmt),(val)))
00138
00139
00140 #define CANDL_eq(v1,v2) ((v1)==(v2))
00141 #define CANDL_ne(v1,v2) ((v1)!=(v2))
00142
00143
00144 #define CANDL_increment(ref,val) ((ref) = (val)+(Entier)(1))
00145 #define CANDL_decrement(ref,val) ((ref) = (val)-(Entier)(1))
00146 #define CANDL_subtract(ref,val1,val2) ((ref) = (val1)-(val2))
00147 #define CANDL_oppose(ref,val) ((ref) = (-(val)))
00148
00149
00150 #define CANDL_zero_p(val) CANDL_eq(val,0)
00151 #define CANDL_notzero_p(val) CANDL_ne(val,0)
00152
00153 #endif
00154
00155 #endif // !CANDL_H