kdecore Library API Documentation

ktypelist.h

00001 /* 00002 This work is derived from: 00003 ---- 00004 The Loki Library 00005 Copyright (c) 2001 by Andrei Alexandrescu 00006 This code accompanies the book: 00007 Alexandrescu, Andrei. "Modern C++ Design: Generic Programming and Design 00008 Patterns Applied". Copyright (c) 2001. Addison-Wesley. 00009 Permission to use, copy, modify, distribute and sell this software for any 00010 purpose is hereby granted without fee, provided that the above copyright 00011 notice appear in all copies and that both that copyright notice and this 00012 permission notice appear in supporting documentation. 00013 The author or Addison-Welsey Longman make no representations about the 00014 suitability of this software for any purpose. It is provided "as is" 00015 without express or implied warranty. 00016 ---- 00017 00018 Simon: Actually we could put a lot more of typelist stuff in here, like 00019 real list management (append, erase, ...) or other things, but 00020 for now I just added the basic typelist and a length template, 00021 to keep compile time at a minimum. If we really need more we can 00022 still add it :) 00023 */ 00024 #ifndef __ktypelist_h__ 00025 #define __ktypelist_h__ 00026 00027 // Convenience macros for transforming flat type enumerations into the 00028 // recursive typelist structure 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 // forward decl. 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
KDE Logo
This file is part of the documentation for kdecore Library Version 3.2.3.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Fri Aug 20 09:48:27 2004 by doxygen 1.3.7 written by Dimitri van Heesch, © 1997-2003