• Skip to content
  • Skip to link menu
  • KDE API Reference
  • kdelibs-4.14.8 API Reference
  • KDE Home
  • Contact Us
 

KDECore

  • kdecore
  • util
ktypelist.h
Go to the documentation of this file.
1 //krazy:excludeall=license (minor variation on MIT license)
2 /*
3  This work is derived from:
4  ----
5  The Loki Library
6  Copyright (c) 2001 by Andrei Alexandrescu //krazy:exclude=copyright
7  This code accompanies the book:
8  Alexandrescu, Andrei. "Modern C++ Design: Generic Programming and Design
9  Patterns Applied". Copyright (c) 2001. Addison-Wesley. //krazy:exclude=copyright
10  Permission to use, copy, modify, distribute and sell this software for any
11  purpose is hereby granted without fee, provided that the above copyright
12  notice appear in all copies and that both that copyright notice and this
13  permission notice appear in supporting documentation.
14  The author or Addison-Welsey Longman make no representations about the
15  suitability of this software for any purpose. It is provided "as is"
16  without express or implied warranty.
17  ----
18 
19  Simon: Actually we could put a lot more of typelist stuff in here, like
20  real list management (append, erase, ...) or other things, but
21  for now I just added the basic typelist and a length template,
22  to keep compile time at a minimum. If we really need more we can
23  still add it :)
24  Holger: Now we add a Template to create the TypeList
25 */
26 
84 #ifndef ktypelist_h
85 #define ktypelist_h
86 
103 #define K_TYPELIST_1(T1) KTypeList<T1, ::KDE::NullType>
104 
105 #define K_TYPELIST_2(T1, T2) KTypeList<T1, K_TYPELIST_1(T2) >
106 
107 #define K_TYPELIST_3(T1, T2, T3) KTypeList<T1, K_TYPELIST_2(T2, T3) >
108 
109 #define K_TYPELIST_4(T1, T2, T3, T4) \
110  KTypeList<T1, K_TYPELIST_3(T2, T3, T4) >
111 
112 #define K_TYPELIST_5(T1, T2, T3, T4, T5) \
113  KTypeList<T1, K_TYPELIST_4(T2, T3, T4, T5) >
114 
115 #define K_TYPELIST_6(T1, T2, T3, T4, T5, T6) \
116  KTypeList<T1, K_TYPELIST_5(T2, T3, T4, T5, T6) >
117 
118 #define K_TYPELIST_7(T1, T2, T3, T4, T5, T6, T7) \
119  KTypeList<T1, K_TYPELIST_6(T2, T3, T4, T5, T6, T7) >
120 
121 #define K_TYPELIST_8(T1, T2, T3, T4, T5, T6, T7, T8) \
122  KTypeList<T1, K_TYPELIST_7(T2, T3, T4, T5, T6, T7, T8) >
123 
124 #define K_TYPELIST_9(T1, T2, T3, T4, T5, T6, T7, T8, T9) \
125  KTypeList<T1, K_TYPELIST_8(T2, T3, T4, T5, T6, T7, T8, T9) >
126 
127 #define K_TYPELIST_10(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) \
128  KTypeList<T1, K_TYPELIST_9(T2, T3, T4, T5, T6, T7, T8, T9, T10) >
129 
130 #define K_TYPELIST_11(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) \
131  KTypeList<T1, K_TYPELIST_10(T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) >
132 
133 #define K_TYPELIST_12(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12) \
134  KTypeList<T1, K_TYPELIST_11(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
135  T11, T12) >
136 
137 #define K_TYPELIST_13(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13) \
138  KTypeList<T1, K_TYPELIST_12(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
139  T11, T12, T13) >
140 
141 #define K_TYPELIST_14(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
142  T11, T12, T13, T14) \
143  KTypeList<T1, K_TYPELIST_13(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
144  T11, T12, T13, T14) >
145 
146 #define K_TYPELIST_15(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
147  T11, T12, T13, T14, T15) \
148  KTypeList<T1, K_TYPELIST_14(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
149  T11, T12, T13, T14, T15) >
150 
151 #define K_TYPELIST_16(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
152  T11, T12, T13, T14, T15, T16) \
153  KTypeList<T1, K_TYPELIST_15(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
154  T11, T12, T13, T14, T15, T16) >
155 
156 #define K_TYPELIST_17(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
157  T11, T12, T13, T14, T15, T16, T17) \
158  KTypeList<T1, K_TYPELIST_16(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
159  T11, T12, T13, T14, T15, T16, T17) >
160 
161 #define K_TYPELIST_18(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
162  T11, T12, T13, T14, T15, T16, T17, T18) \
163  KTypeList<T1, K_TYPELIST_17(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
164  T11, T12, T13, T14, T15, T16, T17, T18) >
165 
166 #define K_TYPELIST_19(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
167  T11, T12, T13, T14, T15, T16, T17, T18, T19) \
168  KTypeList<T1, K_TYPELIST_18(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
169  T11, T12, T13, T14, T15, T16, T17, T18, T19) >
170 
171 #define K_TYPELIST_20(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
172  T11, T12, T13, T14, T15, T16, T17, T18, T19, T20) \
173  KTypeList<T1, K_TYPELIST_19(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
174  T11, T12, T13, T14, T15, T16, T17, T18, T19, T20) >
175 
176 #define K_TYPELIST_21(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
177  T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21) \
178  KTypeList<T1, K_TYPELIST_20(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
179  T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21) >
180 
181 #define K_TYPELIST_22(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
182  T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22) \
183  KTypeList<T1, K_TYPELIST_21(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
184  T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22) >
185 
186 #define K_TYPELIST_23(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
187  T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23) \
188  KTypeList<T1, K_TYPELIST_22(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
189  T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23) >
190 
191 #define K_TYPELIST_24(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
192  T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24) \
193  KTypeList<T1, K_TYPELIST_23(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
194  T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24) >
195 
196 #define K_TYPELIST_25(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
197  T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25) \
198  KTypeList<T1, K_TYPELIST_24(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
199  T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
200  T21, T22, T23, T24, T25) >
201 
202 #define K_TYPELIST_26(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
203  T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
204  T21, T22, T23, T24, T25, T26) \
205  KTypeList<T1, K_TYPELIST_25(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
206  T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
207  T21, T22, T23, T24, T25, T26) >
208 
209 #define K_TYPELIST_27(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
210  T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
211  T21, T22, T23, T24, T25, T26, T27) \
212  KTypeList<T1, K_TYPELIST_26(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
213  T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
214  T21, T22, T23, T24, T25, T26, T27) >
215 
216 #define K_TYPELIST_28(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
217  T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
218  T21, T22, T23, T24, T25, T26, T27, T28) \
219  KTypeList<T1, K_TYPELIST_27(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
220  T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
221  T21, T22, T23, T24, T25, T26, T27, T28) >
222 
223 #define K_TYPELIST_29(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
224  T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
225  T21, T22, T23, T24, T25, T26, T27, T28, T29) \
226  KTypeList<T1, K_TYPELIST_28(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
227  T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
228  T21, T22, T23, T24, T25, T26, T27, T28, T29) >
229 
230 #define K_TYPELIST_30(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
231  T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
232  T21, T22, T23, T24, T25, T26, T27, T28, T29, T30) \
233  KTypeList<T1, K_TYPELIST_29(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
234  T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
235  T21, T22, T23, T24, T25, T26, T27, T28, T29, T30) >
236 
237 #define K_TYPELIST_31(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
238  T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
239  T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31) \
240  KTypeList<T1, K_TYPELIST_30(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
241  T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
242  T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31) >
243 
244 #define K_TYPELIST_32(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
245  T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
246  T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32) \
247  KTypeList<T1, K_TYPELIST_31(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
248  T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
249  T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32) >
250 
251 #define K_TYPELIST_33(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
252  T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
253  T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33) \
254  KTypeList<T1, K_TYPELIST_32(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
255  T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
256  T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33) >
257 
258 #define K_TYPELIST_34(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
259  T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
260  T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34) \
261  KTypeList<T1, K_TYPELIST_33(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
262  T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
263  T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34) >
264 
265 #define K_TYPELIST_35(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
266  T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
267  T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
268  T31, T32, T33, T34, T35) \
269  KTypeList<T1, K_TYPELIST_34(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
270  T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
271  T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
272  T31, T32, T33, T34, T35) >
273 
274 #define K_TYPELIST_36(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
275  T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
276  T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
277  T31, T32, T33, T34, T35, T36) \
278  KTypeList<T1, K_TYPELIST_35(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
279  T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
280  T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
281  T31, T32, T33, T34, T35, T36) >
282 
283 #define K_TYPELIST_37(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
284  T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
285  T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
286  T31, T32, T33, T34, T35, T36, T37) \
287  KTypeList<T1, K_TYPELIST_36(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
288  T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
289  T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
290  T31, T32, T33, T34, T35, T36, T37) >
291 
292 #define K_TYPELIST_38(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
293  T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
294  T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
295  T31, T32, T33, T34, T35, T36, T37, T38) \
296  KTypeList<T1, K_TYPELIST_37(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
297  T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
298  T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
299  T31, T32, T33, T34, T35, T36, T37, T38) >
300 
301 #define K_TYPELIST_39(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
302  T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
303  T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
304  T31, T32, T33, T34, T35, T36, T37, T38, T39) \
305  KTypeList<T1, K_TYPELIST_38(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
306  T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
307  T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
308  T31, T32, T33, T34, T35, T36, T37, T38, T39) >
309 
310 #define K_TYPELIST_40(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
311  T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
312  T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
313  T31, T32, T33, T34, T35, T36, T37, T38, T39, T40) \
314  KTypeList<T1, K_TYPELIST_39(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
315  T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
316  T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
317  T31, T32, T33, T34, T35, T36, T37, T38, T39, T40) >
318 
319 #define K_TYPELIST_41(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
320  T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
321  T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
322  T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41) \
323  KTypeList<T1, K_TYPELIST_40(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
324  T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
325  T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
326  T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41) >
327 
328 #define K_TYPELIST_42(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
329  T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
330  T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
331  T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42) \
332  KTypeList<T1, K_TYPELIST_41(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
333  T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
334  T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
335  T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42) >
336 
337 #define K_TYPELIST_43(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
338  T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
339  T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
340  T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43) \
341  KTypeList<T1, K_TYPELIST_42(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
342  T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
343  T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
344  T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43) >
345 
346 #define K_TYPELIST_44(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
347  T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
348  T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
349  T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44) \
350  KTypeList<T1, K_TYPELIST_43(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
351  T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
352  T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
353  T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44) >
354 
355 #define K_TYPELIST_45(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
356  T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
357  T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
358  T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, \
359  T41, T42, T43, T44, T45) \
360  KTypeList<T1, K_TYPELIST_44(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
361  T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
362  T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
363  T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, \
364  T41, T42, T43, T44, T45) >
365 
366 #define K_TYPELIST_46(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
367  T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
368  T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
369  T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, \
370  T41, T42, T43, T44, T45, T46) \
371  KTypeList<T1, K_TYPELIST_45(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
372  T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
373  T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
374  T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, \
375  T41, T42, T43, T44, T45, T46) >
376 
377 #define K_TYPELIST_47(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
378  T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
379  T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
380  T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, \
381  T41, T42, T43, T44, T45, T46, T47) \
382  KTypeList<T1, K_TYPELIST_46(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
383  T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
384  T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
385  T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, \
386  T41, T42, T43, T44, T45, T46, T47) >
387 
388 #define K_TYPELIST_48(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
389  T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
390  T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
391  T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, \
392  T41, T42, T43, T44, T45, T46, T47, T48) \
393  KTypeList<T1, K_TYPELIST_47(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
394  T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
395  T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
396  T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, \
397  T41, T42, T43, T44, T45, T46, T47, T48) >
398 
399 #define K_TYPELIST_49(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
400  T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
401  T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
402  T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, \
403  T41, T42, T43, T44, T45, T46, T47, T48, T49) \
404  KTypeList<T1, K_TYPELIST_48(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
405  T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
406  T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
407  T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, \
408  T41, T42, T43, T44, T45, T46, T47, T48, T49) >
409 
410 #define K_TYPELIST_50(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
411  T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
412  T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
413  T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, \
414  T41, T42, T43, T44, T45, T46, T47, T48, T49, T50) \
415  KTypeList<T1, K_TYPELIST_49(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
416  T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
417  T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
418  T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, \
419  T41, T42, T43, T44, T45, T46, T47, T48, T49, T50) >
420 
421 
422 namespace KDE
423 {
432  class NullType;
433 }
434 
452 template <class T, class U>
453 struct KTypeList
454 {
456  typedef T Head;
458  typedef U Tail;
459 };
460 
461 // forward decl.
485 template <class TList> struct KTypeListLength;
486 
487 template <>
488 struct KTypeListLength<KDE::NullType>
489 {
493  enum { Value = 0 };
494 };
495 
496 template <class T, class U>
497 struct KTypeListLength< KTypeList<T, U> >
498 {
502  enum { Value = 1 + KTypeListLength<U>::Value };
503 };
504 
506 // class template IndexOf
507 // Finds the index of a type in a typelist
508 // Invocation (TList is a typelist and T is a type):
509 // IndexOf<TList, T>::value
510 // returns the position of T in TList, or NullType if T is not found in TList
512 
535 template <class TList, class T> struct KTypeListIndexOf;
536 
537 template <class T>
538 struct KTypeListIndexOf<KDE::NullType, T>
539 {
540  enum { value = -1 };
541 };
542 
543 template <class T, class Tail>
544 struct KTypeListIndexOf< KTypeList<T, Tail>, T >
545 {
546  enum { value = 0 };
547 };
548 
549 template <class Head, class Tail, class T>
550 struct KTypeListIndexOf< KTypeList<Head, Tail>, T >
551 {
552 private:
553  enum { temp = KTypeListIndexOf<Tail, T>::value };
554 public:
555  enum { value = (temp == -1 ? -1 : 1 + temp) };
556 };
557 
558 
559 
577 template<
578  typename T1 = KDE::NullType, typename T2 = KDE::NullType, typename T3 = KDE::NullType,
579  typename T4 = KDE::NullType, typename T5 = KDE::NullType, typename T6 = KDE::NullType,
580  typename T7 = KDE::NullType, typename T8 = KDE::NullType, typename T9 = KDE::NullType,
581  typename T10 = KDE::NullType, typename T11 = KDE::NullType, typename T12 = KDE::NullType,
582  typename T13 = KDE::NullType, typename T14 = KDE::NullType, typename T15 = KDE::NullType,
583  typename T16 = KDE::NullType, typename T17 = KDE::NullType, typename T18 = KDE::NullType
584  >
585 struct KMakeTypeList{
586 private:
587 typedef typename KMakeTypeList
588 <
589  T2 , T3 , T4 ,
590  T5 , T6 , T7 ,
591  T8 , T9 , T10,
592  T11, T12, T13,
593  T14, T15, T16,
594  T17, T18
595 >::Result TailResult;
596 
597 public:
602  typedef KTypeList<T1, TailResult> Result;
603 };
604 
605 template<
606  typename T2 , typename T3 ,
607  typename T4 , typename T5 , typename T6 ,
608  typename T7 , typename T8 , typename T9 ,
609  typename T10, typename T11, typename T12,
610  typename T13, typename T14, typename T15,
611  typename T16, typename T17, typename T18
612  >
613 struct KMakeTypeList<KDE::NullType, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18>
614 {
615  typedef KDE::NullType Result;
616 };
617 
618 template<>
619 struct KMakeTypeList<>
620 {
621  typedef KDE::NullType Result;
622 };
623 
624 
625 #endif
626 
T
#define T
KTypeListIndexOf
This class template implements a compile-time algorithm for processing typelists. ...
Definition: ktypelist.h:535
KMakeTypeList< KDE::NullType, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 >::Result
KDE::NullType Result
Definition: ktypelist.h:615
KDE::NullType
This empty class serves as a terminal marker for typelists.
KTypeList
The building block of typelists of any length.
Definition: ktypelist.h:453
KTypeListLength
This class template implements a compile-time algorithm for processing typelists. ...
Definition: ktypelist.h:485
KMakeTypeList
This class template implements a compile-time algorithm for generating typelists. ...
Definition: ktypelist.h:585
KTypeList::Head
T Head
first element, a non-typelist type by convention
Definition: ktypelist.h:456
KTypeList::Tail
U Tail
second element, must be either another typelist or KDE::NullType
Definition: ktypelist.h:458
KMakeTypeList<>::Result
KDE::NullType Result
Definition: ktypelist.h:621
KMakeTypeList::Result
KTypeList< T1, TailResult > Result
The resulting KTypeList calculated by this compile-time algorithm.
Definition: ktypelist.h:602
This file is part of the KDE documentation.
Documentation copyright © 1996-2020 The KDE developers.
Generated on Tue Oct 13 2020 16:08:28 by doxygen 1.8.5 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

KDECore

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

kdelibs-4.14.8 API Reference

Skip menu "kdelibs-4.14.8 API Reference"
  • DNSSD
  • Interfaces
  •   KHexEdit
  •   KMediaPlayer
  •   KSpeech
  •   KTextEditor
  • kconf_update
  • KDE3Support
  •   KUnitTest
  • KDECore
  • KDED
  • KDEsu
  • KDEUI
  • KDEWebKit
  • KDocTools
  • KFile
  • KHTML
  • KImgIO
  • KInit
  • kio
  • KIOSlave
  • KJS
  •   KJS-API
  •   WTF
  • kjsembed
  • KNewStuff
  • KParts
  • KPty
  • Kross
  • KUnitConversion
  • KUtils
  • Nepomuk
  • Plasma
  • Solid
  • Sonnet
  • ThreadWeaver
Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal