00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 #ifndef __ktypelist_h__
00025 #define __ktypelist_h__
00026 
00027 
00028 
00029 
00030 #define K_TYPELIST_1(T1) KTypeList<T1, ::KDE::NullType>
00031 
00032 #define K_TYPELIST_2(T1, T2) KTypeList<T1, K_TYPELIST_1(T2) >
00033 
00034 #define K_TYPELIST_3(T1, T2, T3) KTypeList<T1, K_TYPELIST_2(T2, T3) >
00035 
00036 #define K_TYPELIST_4(T1, T2, T3, T4) \
00037     KTypeList<T1, K_TYPELIST_3(T2, T3, T4) >
00038 
00039 #define K_TYPELIST_5(T1, T2, T3, T4, T5) \
00040     KTypeList<T1, K_TYPELIST_4(T2, T3, T4, T5) >
00041 
00042 #define K_TYPELIST_6(T1, T2, T3, T4, T5, T6) \
00043     KTypeList<T1, K_TYPELIST_5(T2, T3, T4, T5, T6) >
00044 
00045 #define K_TYPELIST_7(T1, T2, T3, T4, T5, T6, T7) \
00046     KTypeList<T1, K_TYPELIST_6(T2, T3, T4, T5, T6, T7) >
00047 
00048 #define K_TYPELIST_8(T1, T2, T3, T4, T5, T6, T7, T8) \
00049     KTypeList<T1, K_TYPELIST_7(T2, T3, T4, T5, T6, T7, T8) >
00050 
00051 #define K_TYPELIST_9(T1, T2, T3, T4, T5, T6, T7, T8, T9) \
00052     KTypeList<T1, K_TYPELIST_8(T2, T3, T4, T5, T6, T7, T8, T9) >
00053 
00054 #define K_TYPELIST_10(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) \
00055     KTypeList<T1, K_TYPELIST_9(T2, T3, T4, T5, T6, T7, T8, T9, T10) >
00056 
00057 #define K_TYPELIST_11(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) \
00058     KTypeList<T1, K_TYPELIST_10(T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) >
00059 
00060 #define K_TYPELIST_12(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12) \
00061     KTypeList<T1, K_TYPELIST_11(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00062         T11, T12) >
00063 
00064 #define K_TYPELIST_13(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13) \
00065     KTypeList<T1, K_TYPELIST_12(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00066         T11, T12, T13) >
00067 
00068 #define K_TYPELIST_14(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00069         T11, T12, T13, T14) \
00070     KTypeList<T1, K_TYPELIST_13(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00071         T11, T12, T13, T14) >
00072 
00073 #define K_TYPELIST_15(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00074         T11, T12, T13, T14, T15) \
00075     KTypeList<T1, K_TYPELIST_14(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00076         T11, T12, T13, T14, T15) >
00077 
00078 #define K_TYPELIST_16(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00079         T11, T12, T13, T14, T15, T16) \
00080     KTypeList<T1, K_TYPELIST_15(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00081         T11, T12, T13, T14, T15, T16) >
00082 
00083 #define K_TYPELIST_17(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00084         T11, T12, T13, T14, T15, T16, T17) \
00085     KTypeList<T1, K_TYPELIST_16(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00086         T11, T12, T13, T14, T15, T16, T17) >
00087 
00088 #define K_TYPELIST_18(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00089         T11, T12, T13, T14, T15, T16, T17, T18) \
00090     KTypeList<T1, K_TYPELIST_17(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00091         T11, T12, T13, T14, T15, T16, T17, T18) >
00092 
00093 #define K_TYPELIST_19(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00094         T11, T12, T13, T14, T15, T16, T17, T18, T19) \
00095     KTypeList<T1, K_TYPELIST_18(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00096         T11, T12, T13, T14, T15, T16, T17, T18, T19) >
00097 
00098 #define K_TYPELIST_20(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00099         T11, T12, T13, T14, T15, T16, T17, T18, T19, T20) \
00100     KTypeList<T1, K_TYPELIST_19(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00101         T11, T12, T13, T14, T15, T16, T17, T18, T19, T20) >
00102 
00103 #define K_TYPELIST_21(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00104         T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21) \
00105     KTypeList<T1, K_TYPELIST_20(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00106         T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21) >
00107 
00108 #define K_TYPELIST_22(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00109         T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22) \
00110     KTypeList<T1, K_TYPELIST_21(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00111         T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22) >
00112 
00113 #define K_TYPELIST_23(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00114         T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23) \
00115     KTypeList<T1, K_TYPELIST_22(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00116         T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23) >
00117 
00118 #define K_TYPELIST_24(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00119         T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24) \
00120     KTypeList<T1, K_TYPELIST_23(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00121         T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24) >
00122 
00123 #define K_TYPELIST_25(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00124         T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25) \
00125     KTypeList<T1, K_TYPELIST_24(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00126         T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00127         T21, T22, T23, T24, T25) >
00128 
00129 #define K_TYPELIST_26(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00130         T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00131         T21, T22, T23, T24, T25, T26) \
00132     KTypeList<T1, K_TYPELIST_25(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00133         T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00134         T21, T22, T23, T24, T25, T26) >
00135 
00136 #define K_TYPELIST_27(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00137         T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00138         T21, T22, T23, T24, T25, T26, T27) \
00139     KTypeList<T1, K_TYPELIST_26(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00140         T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00141         T21, T22, T23, T24, T25, T26, T27) >
00142 
00143 #define K_TYPELIST_28(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00144         T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00145         T21, T22, T23, T24, T25, T26, T27, T28) \
00146     KTypeList<T1, K_TYPELIST_27(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00147         T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00148         T21, T22, T23, T24, T25, T26, T27, T28) >
00149 
00150 #define K_TYPELIST_29(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00151         T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00152         T21, T22, T23, T24, T25, T26, T27, T28, T29) \
00153     KTypeList<T1, K_TYPELIST_28(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00154         T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00155         T21, T22, T23, T24, T25, T26, T27, T28, T29) >
00156 
00157 #define K_TYPELIST_30(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00158         T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00159         T21, T22, T23, T24, T25, T26, T27, T28, T29, T30) \
00160     KTypeList<T1, K_TYPELIST_29(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00161         T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00162         T21, T22, T23, T24, T25, T26, T27, T28, T29, T30) >
00163 
00164 #define K_TYPELIST_31(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00165         T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00166         T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31) \
00167     KTypeList<T1, K_TYPELIST_30(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00168         T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00169         T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31) >
00170 
00171 #define K_TYPELIST_32(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00172         T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00173         T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32) \
00174     KTypeList<T1, K_TYPELIST_31(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00175         T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00176         T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32) >
00177 
00178 #define K_TYPELIST_33(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00179         T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00180         T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33) \
00181     KTypeList<T1, K_TYPELIST_32(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00182         T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00183         T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33) >
00184 
00185 #define K_TYPELIST_34(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00186         T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00187         T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34) \
00188     KTypeList<T1, K_TYPELIST_33(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00189         T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00190         T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34) >
00191 
00192 #define K_TYPELIST_35(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00193         T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00194         T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
00195         T31, T32, T33, T34, T35) \
00196     KTypeList<T1, K_TYPELIST_34(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00197         T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00198         T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
00199         T31, T32, T33, T34, T35) >
00200 
00201 #define K_TYPELIST_36(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00202         T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00203         T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
00204         T31, T32, T33, T34, T35, T36) \
00205     KTypeList<T1, K_TYPELIST_35(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, T27, T28, T29, T30, \
00208         T31, T32, T33, T34, T35, T36) >
00209 
00210 #define K_TYPELIST_37(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00211         T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00212         T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
00213         T31, T32, T33, T34, T35, T36, T37) \
00214     KTypeList<T1, K_TYPELIST_36(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00215         T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00216         T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
00217         T31, T32, T33, T34, T35, T36, T37) >
00218 
00219 #define K_TYPELIST_38(T1, 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, T29, T30, \
00222         T31, T32, T33, T34, T35, T36, T37, T38) \
00223     KTypeList<T1, K_TYPELIST_37(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, T30, \
00226         T31, T32, T33, T34, T35, T36, T37, T38) >
00227 
00228 #define K_TYPELIST_39(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00229         T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00230         T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
00231         T31, T32, T33, T34, T35, T36, T37, T38, T39) \
00232     KTypeList<T1, K_TYPELIST_38(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00233         T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00234         T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
00235         T31, T32, T33, T34, T35, T36, T37, T38, T39) >
00236 
00237 #define K_TYPELIST_40(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, \
00240         T31, T32, T33, T34, T35, T36, T37, T38, T39, T40) \
00241     KTypeList<T1, K_TYPELIST_39(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00242         T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00243         T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
00244         T31, T32, T33, T34, T35, T36, T37, T38, T39, T40) >
00245 
00246 #define K_TYPELIST_41(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00247         T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00248         T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
00249         T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41) \
00250     KTypeList<T1, K_TYPELIST_40(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00251         T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00252         T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
00253         T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41) >
00254 
00255 #define K_TYPELIST_42(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00256         T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00257         T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
00258         T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42) \
00259     KTypeList<T1, K_TYPELIST_41(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00260         T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00261         T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
00262         T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42) >
00263 
00264 #define K_TYPELIST_43(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00265         T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00266         T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
00267         T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43) \
00268     KTypeList<T1, K_TYPELIST_42(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00269         T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00270         T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
00271         T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43) >
00272 
00273 #define K_TYPELIST_44(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00274         T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00275         T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
00276         T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44) \
00277     KTypeList<T1, K_TYPELIST_43(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00278         T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00279         T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
00280         T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44) >
00281 
00282 #define K_TYPELIST_45(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00283         T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00284         T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
00285         T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, \
00286         T41, T42, T43, T44, T45) \
00287     KTypeList<T1, K_TYPELIST_44(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, T38, T39, T40, \
00291         T41, T42, T43, T44, T45) >
00292 
00293 #define K_TYPELIST_46(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00294         T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00295         T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
00296         T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, \
00297         T41, T42, T43, T44, T45, T46) \
00298     KTypeList<T1, K_TYPELIST_45(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00299         T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00300         T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
00301         T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, \
00302         T41, T42, T43, T44, T45, T46) >
00303 
00304 #define K_TYPELIST_47(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00305         T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00306         T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
00307         T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, \
00308         T41, T42, T43, T44, T45, T46, T47) \
00309     KTypeList<T1, K_TYPELIST_46(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00310         T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00311         T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
00312         T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, \
00313         T41, T42, T43, T44, T45, T46, T47) >
00314 
00315 #define K_TYPELIST_48(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00316         T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00317         T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
00318         T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, \
00319         T41, T42, T43, T44, T45, T46, T47, T48) \
00320     KTypeList<T1, K_TYPELIST_47(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00321         T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00322         T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
00323         T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, \
00324         T41, T42, T43, T44, T45, T46, T47, T48) >
00325 
00326 #define K_TYPELIST_49(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00327         T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00328         T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
00329         T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, \
00330         T41, T42, T43, T44, T45, T46, T47, T48, T49) \
00331     KTypeList<T1, K_TYPELIST_48(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00332         T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00333         T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
00334         T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, \
00335         T41, T42, T43, T44, T45, T46, T47, T48, T49) >
00336 
00337 #define K_TYPELIST_50(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, \
00341         T41, T42, T43, T44, T45, T46, T47, T48, T49, T50) \
00342     KTypeList<T1, K_TYPELIST_49(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
00343         T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
00344         T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
00345         T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, \
00346         T41, T42, T43, T44, T45, T46, T47, T48, T49, T50) >
00347 
00348 namespace KDE
00349 {
00350     class NullType;
00351 }
00352 
00360 template <class T, class U>
00361 struct KTypeList
00362 {
00364    typedef T Head;
00366    typedef U Tail;
00367 }; 
00368 
00369 
00370 template <class TList> struct KTypeListLength;
00371 
00372 template <>
00373 struct KTypeListLength<KDE::NullType>
00374 {
00378     enum { Value = 0 };
00379 };
00380 
00385 template <class T, class U>
00386 struct KTypeListLength< KTypeList<T, U> >
00387 {
00391     enum { Value = 1 + KTypeListLength<U>::Value };
00392 };
00393 
00394 #endif 
00395