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 #ifndef KERNEL_TYPES_HH
00026 #define KERNEL_TYPES_HH
00027
00028 #include "attributes-id.hh"
00029 #include "alt-stdint.hh"
00030
00031 #include <bitset>
00032 #include <string>
00033
00041
00042
00043
00044
00048 #define NB_MARKS (32)
00049
00053 #define NB_DIRECT_INFO (4)
00054
00055
00056
00057
00059 typedef int8_t TOrbit;
00060
00061
00062
00063 enum
00064 {
00065 ORBIT_NONE = -1,
00066 ORBIT_SELF,
00067 ORBIT_0,
00068 ORBIT_1,
00069 ORBIT_01,
00070 ORBIT_2,
00071 ORBIT_02,
00072 ORBIT_12,
00073 ORBIT_012,
00074 ORBIT_3,
00075 ORBIT_03,
00076 ORBIT_13,
00077 ORBIT_013,
00078 ORBIT_23,
00079 ORBIT_023,
00080 ORBIT_123,
00081 ORBIT_0123,
00082
00083 ORBIT_BORDER_0,
00084 ORBIT_BORDER_1,
00085 ORBIT_BORDER_2,
00086 ORBIT_BORDER_3
00087 };
00088
00089
00090
00091
00092
00093
00094 typedef int TAttributeId;
00095
00098
00099
00100
00106
00107
00115 #define NEG_ORBIT(O1) \
00116 (static_cast<TOrbit> (0xF ^ (static_cast<unsigned int>(O1))))
00117
00126 #define ADD_ORBIT(O1,O2) \
00127 (static_cast<TOrbit>( \
00128 static_cast<unsigned int>(O1) | \
00129 static_cast<unsigned int>(O2)))
00130
00139 #define AND_ORBIT(O1,O2) \
00140 (static_cast<TOrbit>( \
00141 static_cast<unsigned int>(O1) & \
00142 static_cast<unsigned int>(O2)))
00143
00152 #define SUB_ORBIT(O1,O2) \
00153 (static_cast<TOrbit>( \
00154 static_cast<unsigned int>(O1) & \
00155 static_cast<unsigned int>(NEG_ORBIT(O2))))
00156
00164 #define IS_ORBIT_INCLUDED(O1,O2) \
00165 (static_cast<TOrbit>( \
00166 static_cast<unsigned int>(O1) & \
00167 static_cast<unsigned int>(O2)) == O1)
00168
00169
00170
00171
00172
00173
00174 const TOrbit ORBIT_VERTEX = ORBIT_123 ;
00175 const TOrbit ORBIT_EDGE = ORBIT_023 ;
00176 const TOrbit ORBIT_FACE = ORBIT_013 ;
00177 const TOrbit ORBIT_VOLUME = ORBIT_012 ;
00178 const TOrbit ORBIT_CC = ORBIT_0123;
00179
00180
00181
00182
00183
00184
00185
00188 const TOrbit ORBIT_INF[4] =
00189 {
00190 ORBIT_SELF, ORBIT_0, ORBIT_01, ORBIT_012
00191 };
00192
00194 const TOrbit ORBIT_CELL[5] =
00195 {
00196 ORBIT_VERTEX, ORBIT_EDGE, ORBIT_FACE, ORBIT_VOLUME, ORBIT_CC
00197 };
00198
00200 const TOrbit ORBIT_BORDER [4] =
00201 {
00202 ORBIT_BORDER_0, ORBIT_BORDER_1, ORBIT_BORDER_2, ORBIT_BORDER_3
00203 };
00204
00207 const TOrbit ORBIT_I_IM1[4] =
00208 {
00209 ORBIT_0, ORBIT_01, ORBIT_12, ORBIT_23
00210 };
00211
00214 const TOrbit ORBIT_I_IP1[4] =
00215 {
00216 ORBIT_01, ORBIT_12, ORBIT_23, ORBIT_3
00217 };
00218
00221 const TOrbit ORBIT_INVO[4] =
00222 {
00223 ORBIT_23, ORBIT_3, ORBIT_0, ORBIT_01
00224 };
00225
00227 const TOrbit ORBIT_SEWS[4] =
00228 {
00229 ORBIT_023, ORBIT_13, ORBIT_02, ORBIT_013
00230 };
00231
00233 const TOrbit ORBIT_DIM[4] =
00234 {
00235 ORBIT_0, ORBIT_1, ORBIT_2, ORBIT_3
00236 };
00237
00238
00239
00240
00241
00242
00243
00244
00247 typedef int8_t TOperationState;
00248
00249 enum
00250 {
00252 OP_NONE = -1,
00253
00255 OP_ALPHA0,
00257 OP_ALPHA1,
00259 OP_ALPHA2,
00261 OP_ALPHA3,
00264 OP_ALPHAI,
00266 OP_ALPHAJ,
00268 OP_ALPHAK,
00269
00271 OP_JUMP,
00274 OP_TURN_AROUND,
00276 OP_END,
00277
00278
00279 OP_UNKNOWN
00280 };
00281
00282
00283
00284
00293
00294
00296 typedef std::bitset<16> TMask16;
00297
00298
00306
00307
00309 const TMask16 MASK_FALSE((unsigned int) 0x0000);
00311 const TMask16 MASK_TRUE((unsigned int) 0xFFFF);
00312
00315 const TMask16 MASK0((unsigned int) 0xAAAA);
00318 const TMask16 MASK1((unsigned int) 0xCCCC);
00321 const TMask16 MASK2((unsigned int) 0xF0F0);
00324 const TMask16 MASK3((unsigned int) 0xFF00);
00325
00327 const TMask16 MASK0M2(MASK0 & ~MASK2);
00328 const TMask16 MASK0M3(MASK0 & ~MASK3);
00329 const TMask16 MASK1M3(MASK1 & ~MASK3);
00330 const TMask16 MASK2M0(MASK2 & ~MASK0);
00331 const TMask16 MASK3M0(MASK3 & ~MASK0);
00332 const TMask16 MASK3M1(MASK3 & ~MASK1);
00333
00334
00335
00336
00338
00341 typedef int8_t TBurstMethod;
00342
00343 enum
00344 {
00345 FIRST_BURST_METHOD = 0,
00346
00347 BURST_METHOD_SCALE = FIRST_BURST_METHOD,
00348 BURST_METHOD_SHIFT,
00349
00350 LAST_BURST_METHOD
00351 };
00352
00354
00355
00356 #endif // KERNEL_TYPES_HH
00357