00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef CUEX_QCODE_H
00019 #define CUEX_QCODE_H
00020
00021 #include <cuex/fwd.h>
00022
00023 CU_BEGIN_DECLARATIONS
00024
00025
00026
00027
00028 typedef enum {
00029 cuex_qcode_u = 0,
00030 cuex_qcode_e = 1,
00031 cuex_qcode_w = 2,
00032 cuex_qcode_n = 3,
00033 } cuex_qcode_t;
00034 #define cuex_qcode_count 4
00035
00036
00037 typedef enum {
00038
00039 cuex_qcset_bot = 0,
00040
00041 cuex_qcset_u = (1 << cuex_qcode_u),
00042
00043 cuex_qcset_e = (1 << cuex_qcode_e),
00044
00045 cuex_qcset_w = (1 << cuex_qcode_w),
00046
00047 cuex_qcset_n = (1 << cuex_qcode_n),
00048
00049 cuex_qcset_ue = cuex_qcset_e | cuex_qcset_u,
00050
00051 cuex_qcset_uw = cuex_qcset_u | cuex_qcset_w,
00052
00053 cuex_qcset_un = cuex_qcset_u | cuex_qcset_n,
00054
00055 cuex_qcset_ew = cuex_qcset_e | cuex_qcset_w,
00056
00057 cuex_qcset_en = cuex_qcset_e | cuex_qcset_n,
00058
00059 cuex_qcset_wn = cuex_qcset_w | cuex_qcset_n,
00060
00061 cuex_qcset_uew = cuex_qcset_u | cuex_qcset_ew,
00062
00063 cuex_qcset_uen = cuex_qcset_u | cuex_qcset_en,
00064
00065 cuex_qcset_uwn = cuex_qcset_u | cuex_qcset_wn,
00066
00067 cuex_qcset_ewn = cuex_qcset_e | cuex_qcset_wn,
00068
00069 cuex_qcset_uewn = cuex_qcset_ue | cuex_qcset_wn,
00070
00071 cuex_qcset_top = cuex_qcset_uewn
00072 } cuex_qcset_t;
00073
00074
00075 CU_SINLINE cuex_qcset_t cuex_qcset_union(cuex_qcset_t S0, cuex_qcset_t S1)
00076 { return (cuex_qcset_t)(S0 | S1); }
00077
00078
00079 CU_SINLINE cuex_qcset_t cuex_qcset_isecn(cuex_qcset_t S0, cuex_qcset_t S1)
00080 { return (cuex_qcset_t)(S0 & S1); }
00081
00082
00083 CU_SINLINE cuex_qcset_t cuex_qcset_singleton(cuex_qcode_t qc)
00084 { return (cuex_qcset_t)(1 << qc); }
00085
00086
00087 CU_SINLINE cu_bool_t cuex_qcset_contains(cuex_qcset_t S, cuex_qcode_t qc)
00088 { return (1 << qc) & S; }
00089
00090
00091 CU_SINLINE cuex_qcset_t cuex_qcset_complement(cuex_qcset_t S)
00092 { return (cuex_qcset_t)~S; }
00093
00094
00095 CU_END_DECLARATIONS
00096
00097 #endif