• Skip to content
  • Skip to link menu
KDE 3.5 API Reference
  • KDE API Reference
  • API Reference
  • Sitemap
  • Contact Us
 

KDECore

ktypelist.h

Go to the documentation of this file.
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  Holger: Now we add a Template to create the TypeList
00024 */
00025 #ifndef __ktypelist_h__
00026 #define __ktypelist_h__
00027 
00028 // Convenience macros for transforming flat type enumerations into the
00029 // recursive typelist structure
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 // forward decl.
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 // class template IndexOf
00397 // Finds the index of a type in a typelist
00398 // Invocation (TList is a typelist and T is a type):
00399 // IndexOf<TList, T>::value
00400 // returns the position of T in TList, or NullType if T is not found in TList
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 

KDECore

Skip menu "KDECore"
  • Main Page
  • Modules
  • Namespace List
  • Class Hierarchy
  • Alphabetical List
  • Class List
  • File List
  • Namespace Members
  • Class Members
  • Related Pages

API Reference

Skip menu "API Reference"
  • dcop
  • DNSSD
  • interfaces
  • Kate
  • kconf_update
  • KDECore
  • KDED
  • kdefx
  • KDEsu
  • kdeui
  • KDocTools
  • KHTML
  • KImgIO
  • KInit
  • kio
  • kioslave
  • KJS
  • KNewStuff
  • KParts
  • KUtils
Generated for API Reference by doxygen 1.5.9
This website is maintained by Adriaan de Groot and Allen Winter.
KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal