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

KDECore

ktypelist.h

Go to the documentation of this file.
00001 //krazy:excludeall=license (minor variation on MIT license)
00002 /*
00003  This work is derived from:
00004  ----
00005  The Loki Library
00006  Copyright (c) 2001 by Andrei Alexandrescu                                  //krazy:exclude=copyright
00007  This code accompanies the book:
00008  Alexandrescu, Andrei. "Modern C++ Design: Generic Programming and Design
00009      Patterns Applied". Copyright (c) 2001. Addison-Wesley.                 //krazy:exclude=copyright
00010  Permission to use, copy, modify, distribute and sell this software for any
00011      purpose is hereby granted without fee, provided that the above copyright
00012      notice appear in all copies and that both that copyright notice and this
00013      permission notice appear in supporting documentation.
00014  The author or Addison-Welsey Longman make no representations about the
00015      suitability of this software for any purpose. It is provided "as is"
00016      without express or implied warranty.
00017  ----
00018 
00019  Simon: Actually we could put a lot more of typelist stuff in here, like
00020         real list management (append, erase, ...) or other things, but
00021     for now I just added the basic typelist and a length template,
00022     to keep compile time at a minimum. If we really need more we can
00023     still add it :)
00024  Holger: Now we add a Template to create the TypeList
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 // forward decl.
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 // class template IndexOf
00507 // Finds the index of a type in a typelist
00508 // Invocation (TList is a typelist and T is a type):
00509 // IndexOf<TList, T>::value
00510 // returns the position of T in TList, or NullType if T is not found in TList
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 

KDECore

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

kdelibs

Skip menu "kdelibs"
  • DNSSD
  • Interfaces
  •   KHexEdit
  •   KMediaPlayer
  •   KSpeech
  •   KTextEditor
  • Kate
  • kconf_update
  • KDE3Support
  •   KUnitTest
  • KDECore
  • KDED
  • KDEsu
  • KDEUI
  • KDocTools
  • KFile
  • KHTML
  • KImgIO
  • KInit
  • kio
  • KIOSlave
  • KJS
  •   KJS-API
  •   WTF
  • kjsembed
  • KNewStuff
  • KParts
  • KPty
  • Kross
  • KUtils
  • Nepomuk
  • Plasma
  • Solid
  • Sonnet
  • ThreadWeaver
Generated for kdelibs by doxygen 1.6.1
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