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 __ktypelist_h__
00026 #define __ktypelist_h__
00027
00028
00029
00030
00031 #define K_TYPELIST_1(T1) KTypeList<T1, ::KDE::NullType>
00032
00033 #define K_TYPELIST_2(T1, T2) KTypeList<T1, K_TYPELIST_1(T2) >
00034
00035 #define K_TYPELIST_3(T1, T2, T3) KTypeList<T1, K_TYPELIST_2(T2, T3) >
00036
00037 #define K_TYPELIST_4(T1, T2, T3, T4) \
00038 KTypeList<T1, K_TYPELIST_3(T2, T3, T4) >
00039
00040 #define K_TYPELIST_5(T1, T2, T3, T4, T5) \
00041 KTypeList<T1, K_TYPELIST_4(T2, T3, T4, T5) >
00042
00043 #define K_TYPELIST_6(T1, T2, T3, T4, T5, T6) \
00044 KTypeList<T1, K_TYPELIST_5(T2, T3, T4, T5, T6) >
00045
00046 #define K_TYPELIST_7(T1, T2, T3, T4, T5, T6, T7) \
00047 KTypeList<T1, K_TYPELIST_6(T2, T3, T4, T5, T6, T7) >
00048
00049 #define K_TYPELIST_8(T1, T2, T3, T4, T5, T6, T7, T8) \
00050 KTypeList<T1, K_TYPELIST_7(T2, T3, T4, T5, T6, T7, T8) >
00051
00052 #define K_TYPELIST_9(T1, T2, T3, T4, T5, T6, T7, T8, T9) \
00053 KTypeList<T1, K_TYPELIST_8(T2, T3, T4, T5, T6, T7, T8, T9) >
00054
00055 #define K_TYPELIST_10(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) \
00056 KTypeList<T1, K_TYPELIST_9(T2, T3, T4, T5, T6, T7, T8, T9, T10) >
00057
00058 #define K_TYPELIST_11(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) \
00059 KTypeList<T1, K_TYPELIST_10(T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) >
00060
00061 #define K_TYPELIST_12(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12) \
00062 KTypeList<T1, K_TYPELIST_11(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00063 T11, T12) >
00064
00065 #define K_TYPELIST_13(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13) \
00066 KTypeList<T1, K_TYPELIST_12(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00067 T11, T12, T13) >
00068
00069 #define K_TYPELIST_14(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00070 T11, T12, T13, T14) \
00071 KTypeList<T1, K_TYPELIST_13(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00072 T11, T12, T13, T14) >
00073
00074 #define K_TYPELIST_15(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00075 T11, T12, T13, T14, T15) \
00076 KTypeList<T1, K_TYPELIST_14(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00077 T11, T12, T13, T14, T15) >
00078
00079 #define K_TYPELIST_16(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00080 T11, T12, T13, T14, T15, T16) \
00081 KTypeList<T1, K_TYPELIST_15(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00082 T11, T12, T13, T14, T15, T16) >
00083
00084 #define K_TYPELIST_17(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00085 T11, T12, T13, T14, T15, T16, T17) \
00086 KTypeList<T1, K_TYPELIST_16(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00087 T11, T12, T13, T14, T15, T16, T17) >
00088
00089 #define K_TYPELIST_18(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00090 T11, T12, T13, T14, T15, T16, T17, T18) \
00091 KTypeList<T1, K_TYPELIST_17(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00092 T11, T12, T13, T14, T15, T16, T17, T18) >
00093
00094 #define K_TYPELIST_19(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00095 T11, T12, T13, T14, T15, T16, T17, T18, T19) \
00096 KTypeList<T1, K_TYPELIST_18(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00097 T11, T12, T13, T14, T15, T16, T17, T18, T19) >
00098
00099 #define K_TYPELIST_20(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00100 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20) \
00101 KTypeList<T1, K_TYPELIST_19(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00102 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20) >
00103
00104 #define K_TYPELIST_21(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00105 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21) \
00106 KTypeList<T1, K_TYPELIST_20(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00107 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21) >
00108
00109 #define K_TYPELIST_22(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00110 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22) \
00111 KTypeList<T1, K_TYPELIST_21(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00112 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22) >
00113
00114 #define K_TYPELIST_23(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00115 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23) \
00116 KTypeList<T1, K_TYPELIST_22(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00117 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23) >
00118
00119 #define K_TYPELIST_24(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00120 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24) \
00121 KTypeList<T1, K_TYPELIST_23(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00122 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24) >
00123
00124 #define K_TYPELIST_25(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00125 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25) \
00126 KTypeList<T1, K_TYPELIST_24(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00127 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00128 T21, T22, T23, T24, T25) >
00129
00130 #define K_TYPELIST_26(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00131 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00132 T21, T22, T23, T24, T25, T26) \
00133 KTypeList<T1, K_TYPELIST_25(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00134 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00135 T21, T22, T23, T24, T25, T26) >
00136
00137 #define K_TYPELIST_27(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00138 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00139 T21, T22, T23, T24, T25, T26, T27) \
00140 KTypeList<T1, K_TYPELIST_26(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00141 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00142 T21, T22, T23, T24, T25, T26, T27) >
00143
00144 #define K_TYPELIST_28(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00145 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00146 T21, T22, T23, T24, T25, T26, T27, T28) \
00147 KTypeList<T1, K_TYPELIST_27(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00148 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00149 T21, T22, T23, T24, T25, T26, T27, T28) >
00150
00151 #define K_TYPELIST_29(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00152 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00153 T21, T22, T23, T24, T25, T26, T27, T28, T29) \
00154 KTypeList<T1, K_TYPELIST_28(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00155 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00156 T21, T22, T23, T24, T25, T26, T27, T28, T29) >
00157
00158 #define K_TYPELIST_30(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00159 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00160 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30) \
00161 KTypeList<T1, K_TYPELIST_29(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00162 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00163 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30) >
00164
00165 #define K_TYPELIST_31(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00166 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00167 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31) \
00168 KTypeList<T1, K_TYPELIST_30(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00169 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00170 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31) >
00171
00172 #define K_TYPELIST_32(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00173 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00174 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32) \
00175 KTypeList<T1, K_TYPELIST_31(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00176 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00177 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32) >
00178
00179 #define K_TYPELIST_33(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00180 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00181 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33) \
00182 KTypeList<T1, K_TYPELIST_32(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00183 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00184 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33) >
00185
00186 #define K_TYPELIST_34(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00187 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00188 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34) \
00189 KTypeList<T1, K_TYPELIST_33(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00190 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00191 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34) >
00192
00193 #define K_TYPELIST_35(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00194 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00195 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
00196 T31, T32, T33, T34, T35) \
00197 KTypeList<T1, K_TYPELIST_34(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00198 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00199 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
00200 T31, T32, T33, T34, T35) >
00201
00202 #define K_TYPELIST_36(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00203 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00204 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
00205 T31, T32, T33, T34, T35, T36) \
00206 KTypeList<T1, K_TYPELIST_35(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00207 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00208 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
00209 T31, T32, T33, T34, T35, T36) >
00210
00211 #define K_TYPELIST_37(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00212 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00213 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
00214 T31, T32, T33, T34, T35, T36, T37) \
00215 KTypeList<T1, K_TYPELIST_36(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00216 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00217 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
00218 T31, T32, T33, T34, T35, T36, T37) >
00219
00220 #define K_TYPELIST_38(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00221 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00222 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
00223 T31, T32, T33, T34, T35, T36, T37, T38) \
00224 KTypeList<T1, K_TYPELIST_37(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00225 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00226 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
00227 T31, T32, T33, T34, T35, T36, T37, T38) >
00228
00229 #define K_TYPELIST_39(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00230 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00231 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
00232 T31, T32, T33, T34, T35, T36, T37, T38, T39) \
00233 KTypeList<T1, K_TYPELIST_38(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00234 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00235 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
00236 T31, T32, T33, T34, T35, T36, T37, T38, T39) >
00237
00238 #define K_TYPELIST_40(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00239 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00240 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
00241 T31, T32, T33, T34, T35, T36, T37, T38, T39, T40) \
00242 KTypeList<T1, K_TYPELIST_39(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00243 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00244 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
00245 T31, T32, T33, T34, T35, T36, T37, T38, T39, T40) >
00246
00247 #define K_TYPELIST_41(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00248 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00249 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
00250 T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41) \
00251 KTypeList<T1, K_TYPELIST_40(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00252 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00253 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
00254 T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41) >
00255
00256 #define K_TYPELIST_42(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00257 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00258 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
00259 T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42) \
00260 KTypeList<T1, K_TYPELIST_41(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00261 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00262 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
00263 T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42) >
00264
00265 #define K_TYPELIST_43(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00266 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00267 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
00268 T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43) \
00269 KTypeList<T1, K_TYPELIST_42(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00270 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00271 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
00272 T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43) >
00273
00274 #define K_TYPELIST_44(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00275 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00276 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
00277 T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44) \
00278 KTypeList<T1, K_TYPELIST_43(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00279 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00280 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
00281 T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44) >
00282
00283 #define K_TYPELIST_45(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00284 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00285 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
00286 T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, \
00287 T41, T42, T43, T44, T45) \
00288 KTypeList<T1, K_TYPELIST_44(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00289 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00290 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
00291 T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, \
00292 T41, T42, T43, T44, T45) >
00293
00294 #define K_TYPELIST_46(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00295 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00296 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
00297 T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, \
00298 T41, T42, T43, T44, T45, T46) \
00299 KTypeList<T1, K_TYPELIST_45(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00300 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00301 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
00302 T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, \
00303 T41, T42, T43, T44, T45, T46) >
00304
00305 #define K_TYPELIST_47(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00306 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00307 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
00308 T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, \
00309 T41, T42, T43, T44, T45, T46, T47) \
00310 KTypeList<T1, K_TYPELIST_46(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00311 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00312 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
00313 T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, \
00314 T41, T42, T43, T44, T45, T46, T47) >
00315
00316 #define K_TYPELIST_48(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00317 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00318 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
00319 T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, \
00320 T41, T42, T43, T44, T45, T46, T47, T48) \
00321 KTypeList<T1, K_TYPELIST_47(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00322 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00323 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
00324 T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, \
00325 T41, T42, T43, T44, T45, T46, T47, T48) >
00326
00327 #define K_TYPELIST_49(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00328 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00329 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
00330 T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, \
00331 T41, T42, T43, T44, T45, T46, T47, T48, T49) \
00332 KTypeList<T1, K_TYPELIST_48(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00333 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00334 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
00335 T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, \
00336 T41, T42, T43, T44, T45, T46, T47, T48, T49) >
00337
00338 #define K_TYPELIST_50(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00339 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00340 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
00341 T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, \
00342 T41, T42, T43, T44, T45, T46, T47, T48, T49, T50) \
00343 KTypeList<T1, K_TYPELIST_49(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00344 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00345 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
00346 T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, \
00347 T41, T42, T43, T44, T45, T46, T47, T48, T49, T50) >
00348
00349 namespace KDE
00350 {
00351 class NullType;
00352 }
00353
00361 template <class T, class U>
00362 struct KTypeList
00363 {
00365 typedef T Head;
00367 typedef U Tail;
00368 };
00369
00370
00371 template <class TList> struct KTypeListLength;
00372
00373 template <>
00374 struct KTypeListLength<KDE::NullType>
00375 {
00379 enum { Value = 0 };
00380 };
00381
00386 template <class T, class U>
00387 struct KTypeListLength< KTypeList<T, U> >
00388 {
00392 enum { Value = 1 + KTypeListLength<U>::Value };
00393 };
00394
00396
00397
00398
00399
00400
00402
00403 template <class TList, class T> struct KTypeListIndexOf;
00404
00405 template <class T>
00406 struct KTypeListIndexOf<KDE::NullType, T>
00407 {
00408 enum { value = -1 };
00409 };
00410
00411 template <class T, class Tail>
00412 struct KTypeListIndexOf< KTypeList<T, Tail>, T >
00413 {
00414 enum { value = 0 };
00415 };
00416
00417 template <class Head, class Tail, class T>
00418 struct KTypeListIndexOf< KTypeList<Head, Tail>, T >
00419 {
00420 private:
00421 enum { temp = KTypeListIndexOf<Tail, T>::value };
00422 public:
00423 enum { value = (temp == -1 ? -1 : 1 + temp) };
00424 };
00425
00426
00427
00441 template<
00442 typename T1 = KDE::NullType, typename T2 = KDE::NullType, typename T3 = KDE::NullType,
00443 typename T4 = KDE::NullType, typename T5 = KDE::NullType, typename T6 = KDE::NullType,
00444 typename T7 = KDE::NullType, typename T8 = KDE::NullType, typename T9 = KDE::NullType,
00445 typename T10 = KDE::NullType, typename T11 = KDE::NullType, typename T12 = KDE::NullType,
00446 typename T13 = KDE::NullType, typename T14 = KDE::NullType, typename T15 = KDE::NullType,
00447 typename T16 = KDE::NullType, typename T17 = KDE::NullType, typename T18 = KDE::NullType
00448 >
00449 struct KMakeTypeList{
00450 private:
00451 typedef typename KMakeTypeList
00452 <
00453 T2 , T3 , T4 ,
00454 T5 , T6 , T7 ,
00455 T8 , T9 , T10,
00456 T11, T12, T13,
00457 T14, T15, T16,
00458 T17, T18
00459 >::Result TailResult;
00460
00461 public:
00462 typedef KTypeList<T1, TailResult> Result;
00463 };
00464
00465 template<>
00466 struct KMakeTypeList<>
00467 {
00468 typedef KDE::NullType Result;
00469 };
00470
00471
00472 #endif
00473