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) >
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 kdelibs Version 3.1.4.
Documentation copyright © 1996-2002 the KDE developers.
Generated on Sun Feb 27 22:14:48 2005 by doxygen 1.3.4 written by Dimitri van Heesch, © 1997-2001