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
00084 #ifndef ktypelist_h
00085 #define ktypelist_h
00086
00103 #define K_TYPELIST_1(T1) KTypeList<T1, ::KDE::NullType>
00104
00105 #define K_TYPELIST_2(T1, T2) KTypeList<T1, K_TYPELIST_1(T2) >
00106
00107 #define K_TYPELIST_3(T1, T2, T3) KTypeList<T1, K_TYPELIST_2(T2, T3) >
00108
00109 #define K_TYPELIST_4(T1, T2, T3, T4) \
00110 KTypeList<T1, K_TYPELIST_3(T2, T3, T4) >
00111
00112 #define K_TYPELIST_5(T1, T2, T3, T4, T5) \
00113 KTypeList<T1, K_TYPELIST_4(T2, T3, T4, T5) >
00114
00115 #define K_TYPELIST_6(T1, T2, T3, T4, T5, T6) \
00116 KTypeList<T1, K_TYPELIST_5(T2, T3, T4, T5, T6) >
00117
00118 #define K_TYPELIST_7(T1, T2, T3, T4, T5, T6, T7) \
00119 KTypeList<T1, K_TYPELIST_6(T2, T3, T4, T5, T6, T7) >
00120
00121 #define K_TYPELIST_8(T1, T2, T3, T4, T5, T6, T7, T8) \
00122 KTypeList<T1, K_TYPELIST_7(T2, T3, T4, T5, T6, T7, T8) >
00123
00124 #define K_TYPELIST_9(T1, T2, T3, T4, T5, T6, T7, T8, T9) \
00125 KTypeList<T1, K_TYPELIST_8(T2, T3, T4, T5, T6, T7, T8, T9) >
00126
00127 #define K_TYPELIST_10(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) \
00128 KTypeList<T1, K_TYPELIST_9(T2, T3, T4, T5, T6, T7, T8, T9, T10) >
00129
00130 #define K_TYPELIST_11(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) \
00131 KTypeList<T1, K_TYPELIST_10(T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) >
00132
00133 #define K_TYPELIST_12(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12) \
00134 KTypeList<T1, K_TYPELIST_11(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00135 T11, T12) >
00136
00137 #define K_TYPELIST_13(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13) \
00138 KTypeList<T1, K_TYPELIST_12(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00139 T11, T12, T13) >
00140
00141 #define K_TYPELIST_14(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00142 T11, T12, T13, T14) \
00143 KTypeList<T1, K_TYPELIST_13(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00144 T11, T12, T13, T14) >
00145
00146 #define K_TYPELIST_15(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00147 T11, T12, T13, T14, T15) \
00148 KTypeList<T1, K_TYPELIST_14(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00149 T11, T12, T13, T14, T15) >
00150
00151 #define K_TYPELIST_16(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00152 T11, T12, T13, T14, T15, T16) \
00153 KTypeList<T1, K_TYPELIST_15(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00154 T11, T12, T13, T14, T15, T16) >
00155
00156 #define K_TYPELIST_17(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00157 T11, T12, T13, T14, T15, T16, T17) \
00158 KTypeList<T1, K_TYPELIST_16(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00159 T11, T12, T13, T14, T15, T16, T17) >
00160
00161 #define K_TYPELIST_18(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00162 T11, T12, T13, T14, T15, T16, T17, T18) \
00163 KTypeList<T1, K_TYPELIST_17(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00164 T11, T12, T13, T14, T15, T16, T17, T18) >
00165
00166 #define K_TYPELIST_19(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00167 T11, T12, T13, T14, T15, T16, T17, T18, T19) \
00168 KTypeList<T1, K_TYPELIST_18(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00169 T11, T12, T13, T14, T15, T16, T17, T18, T19) >
00170
00171 #define K_TYPELIST_20(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00172 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20) \
00173 KTypeList<T1, K_TYPELIST_19(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00174 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20) >
00175
00176 #define K_TYPELIST_21(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00177 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21) \
00178 KTypeList<T1, K_TYPELIST_20(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00179 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21) >
00180
00181 #define K_TYPELIST_22(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00182 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22) \
00183 KTypeList<T1, K_TYPELIST_21(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00184 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22) >
00185
00186 #define K_TYPELIST_23(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00187 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23) \
00188 KTypeList<T1, K_TYPELIST_22(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00189 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23) >
00190
00191 #define K_TYPELIST_24(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00192 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24) \
00193 KTypeList<T1, K_TYPELIST_23(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00194 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24) >
00195
00196 #define K_TYPELIST_25(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00197 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25) \
00198 KTypeList<T1, K_TYPELIST_24(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00199 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00200 T21, T22, T23, T24, T25) >
00201
00202 #define K_TYPELIST_26(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) \
00205 KTypeList<T1, K_TYPELIST_25(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00206 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00207 T21, T22, T23, T24, T25, T26) >
00208
00209 #define K_TYPELIST_27(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00210 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00211 T21, T22, T23, T24, T25, T26, T27) \
00212 KTypeList<T1, K_TYPELIST_26(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00213 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00214 T21, T22, T23, T24, T25, T26, T27) >
00215
00216 #define K_TYPELIST_28(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00217 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00218 T21, T22, T23, T24, T25, T26, T27, T28) \
00219 KTypeList<T1, K_TYPELIST_27(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00220 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00221 T21, T22, T23, T24, T25, T26, T27, T28) >
00222
00223 #define K_TYPELIST_29(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00224 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00225 T21, T22, T23, T24, T25, T26, T27, T28, T29) \
00226 KTypeList<T1, K_TYPELIST_28(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00227 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00228 T21, T22, T23, T24, T25, T26, T27, T28, T29) >
00229
00230 #define K_TYPELIST_30(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00231 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00232 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30) \
00233 KTypeList<T1, K_TYPELIST_29(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
00237 #define K_TYPELIST_31(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00238 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00239 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31) \
00240 KTypeList<T1, K_TYPELIST_30(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00241 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00242 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31) >
00243
00244 #define K_TYPELIST_32(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00245 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00246 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32) \
00247 KTypeList<T1, K_TYPELIST_31(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, T31, T32) >
00250
00251 #define K_TYPELIST_33(T1, 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, T31, T32, T33) \
00254 KTypeList<T1, K_TYPELIST_32(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00255 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00256 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33) >
00257
00258 #define K_TYPELIST_34(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00259 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00260 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34) \
00261 KTypeList<T1, K_TYPELIST_33(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00262 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00263 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34) >
00264
00265 #define K_TYPELIST_35(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) \
00269 KTypeList<T1, K_TYPELIST_34(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) >
00273
00274 #define K_TYPELIST_36(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) \
00278 KTypeList<T1, K_TYPELIST_35(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) >
00282
00283 #define K_TYPELIST_37(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) \
00287 KTypeList<T1, K_TYPELIST_36(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00288 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00289 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
00290 T31, T32, T33, T34, T35, T36, T37) >
00291
00292 #define K_TYPELIST_38(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00293 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00294 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
00295 T31, T32, T33, T34, T35, T36, T37, T38) \
00296 KTypeList<T1, K_TYPELIST_37(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00297 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00298 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
00299 T31, T32, T33, T34, T35, T36, T37, T38) >
00300
00301 #define K_TYPELIST_39(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00302 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00303 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
00304 T31, T32, T33, T34, T35, T36, T37, T38, T39) \
00305 KTypeList<T1, K_TYPELIST_38(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) >
00309
00310 #define K_TYPELIST_40(T1, 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 KTypeList<T1, K_TYPELIST_39(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00315 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00316 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
00317 T31, T32, T33, T34, T35, T36, T37, T38, T39, T40) >
00318
00319 #define K_TYPELIST_41(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00320 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00321 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
00322 T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41) \
00323 KTypeList<T1, K_TYPELIST_40(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00324 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00325 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
00326 T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41) >
00327
00328 #define K_TYPELIST_42(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00329 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00330 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
00331 T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42) \
00332 KTypeList<T1, K_TYPELIST_41(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, T41, T42) >
00336
00337 #define K_TYPELIST_43(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00338 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00339 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
00340 T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43) \
00341 KTypeList<T1, K_TYPELIST_42(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00342 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00343 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
00344 T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43) >
00345
00346 #define K_TYPELIST_44(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00347 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00348 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
00349 T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44) \
00350 KTypeList<T1, K_TYPELIST_43(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00351 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00352 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
00353 T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44) >
00354
00355 #define K_TYPELIST_45(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00356 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00357 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
00358 T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, \
00359 T41, T42, T43, T44, T45) \
00360 KTypeList<T1, K_TYPELIST_44(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00361 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00362 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
00363 T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, \
00364 T41, T42, T43, T44, T45) >
00365
00366 #define K_TYPELIST_46(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00367 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00368 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
00369 T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, \
00370 T41, T42, T43, T44, T45, T46) \
00371 KTypeList<T1, K_TYPELIST_45(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00372 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00373 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
00374 T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, \
00375 T41, T42, T43, T44, T45, T46) >
00376
00377 #define K_TYPELIST_47(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00378 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00379 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
00380 T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, \
00381 T41, T42, T43, T44, T45, T46, T47) \
00382 KTypeList<T1, K_TYPELIST_46(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00383 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00384 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
00385 T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, \
00386 T41, T42, T43, T44, T45, T46, T47) >
00387
00388 #define K_TYPELIST_48(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00389 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00390 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
00391 T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, \
00392 T41, T42, T43, T44, T45, T46, T47, T48) \
00393 KTypeList<T1, K_TYPELIST_47(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00394 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00395 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
00396 T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, \
00397 T41, T42, T43, T44, T45, T46, T47, T48) >
00398
00399 #define K_TYPELIST_49(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00400 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00401 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
00402 T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, \
00403 T41, T42, T43, T44, T45, T46, T47, T48, T49) \
00404 KTypeList<T1, K_TYPELIST_48(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00405 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00406 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
00407 T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, \
00408 T41, T42, T43, T44, T45, T46, T47, T48, T49) >
00409
00410 #define K_TYPELIST_50(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00411 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00412 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
00413 T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, \
00414 T41, T42, T43, T44, T45, T46, T47, T48, T49, T50) \
00415 KTypeList<T1, K_TYPELIST_49(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00416 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00417 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
00418 T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, \
00419 T41, T42, T43, T44, T45, T46, T47, T48, T49, T50) >
00420
00421
00422 namespace KDE
00423 {
00432 class NullType;
00433 }
00434
00452 template <class T, class U>
00453 struct KTypeList
00454 {
00456 typedef T Head;
00458 typedef U Tail;
00459 };
00460
00461
00485 template <class TList> struct KTypeListLength;
00486
00487 template <>
00488 struct KTypeListLength<KDE::NullType>
00489 {
00493 enum { Value = 0 };
00494 };
00495
00496 template <class T, class U>
00497 struct KTypeListLength< KTypeList<T, U> >
00498 {
00502 enum { Value = 1 + KTypeListLength<U>::Value };
00503 };
00504
00506
00507
00508
00509
00510
00512
00535 template <class TList, class T> struct KTypeListIndexOf;
00536
00537 template <class T>
00538 struct KTypeListIndexOf<KDE::NullType, T>
00539 {
00540 enum { value = -1 };
00541 };
00542
00543 template <class T, class Tail>
00544 struct KTypeListIndexOf< KTypeList<T, Tail>, T >
00545 {
00546 enum { value = 0 };
00547 };
00548
00549 template <class Head, class Tail, class T>
00550 struct KTypeListIndexOf< KTypeList<Head, Tail>, T >
00551 {
00552 private:
00553 enum { temp = KTypeListIndexOf<Tail, T>::value };
00554 public:
00555 enum { value = (temp == -1 ? -1 : 1 + temp) };
00556 };
00557
00558
00559
00577 template<
00578 typename T1 = KDE::NullType, typename T2 = KDE::NullType, typename T3 = KDE::NullType,
00579 typename T4 = KDE::NullType, typename T5 = KDE::NullType, typename T6 = KDE::NullType,
00580 typename T7 = KDE::NullType, typename T8 = KDE::NullType, typename T9 = KDE::NullType,
00581 typename T10 = KDE::NullType, typename T11 = KDE::NullType, typename T12 = KDE::NullType,
00582 typename T13 = KDE::NullType, typename T14 = KDE::NullType, typename T15 = KDE::NullType,
00583 typename T16 = KDE::NullType, typename T17 = KDE::NullType, typename T18 = KDE::NullType
00584 >
00585 struct KMakeTypeList{
00586 private:
00587 typedef typename KMakeTypeList
00588 <
00589 T2 , T3 , T4 ,
00590 T5 , T6 , T7 ,
00591 T8 , T9 , T10,
00592 T11, T12, T13,
00593 T14, T15, T16,
00594 T17, T18
00595 >::Result TailResult;
00596
00597 public:
00602 typedef KTypeList<T1, TailResult> Result;
00603 };
00604
00605 template<>
00606 struct KMakeTypeList<>
00607 {
00608 typedef KDE::NullType Result;
00609 };
00610
00611
00612 #endif
00613