• Skip to content
  • Skip to link menu
  • KDE API Reference
  • kdelibs-4.14.38 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) >
421
422namespace KDE
423{
432 class NullType;
433}
434
452template <class T, class U>
453struct KTypeList
454{
456 typedef T Head;
458 typedef U Tail;
459};
460
461// forward decl.
485template <class TList> struct KTypeListLength;
486
487template <>
488struct KTypeListLength<KDE::NullType>
489{
493 enum { Value = 0 };
494};
495
496template <class T, class U>
497struct 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
535template <class TList, class T> struct KTypeListIndexOf;
536
537template <class T>
538struct KTypeListIndexOf<KDE::NullType, T>
539{
540 enum { value = -1 };
541};
542
543template <class T, class Tail>
544struct KTypeListIndexOf< KTypeList<T, Tail>, T >
545{
546 enum { value = 0 };
547};
548
549template <class Head, class Tail, class T>
550struct KTypeListIndexOf< KTypeList<Head, Tail>, T >
551{
552private:
553 enum { temp = KTypeListIndexOf<Tail, T>::value };
554public:
555 enum { value = (temp == -1 ? -1 : 1 + temp) };
556};
557
558
559
577template<
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 >
585struct KMakeTypeList{
586private:
587typedef 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
597public:
602 typedef KTypeList<T1, TailResult> Result;
603};
604
605template<
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 >
613struct 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
618template<>
619struct KMakeTypeList<>
620{
621 typedef KDE::NullType Result;
622};
623
624
625#endif
626
NullType
This empty class serves as a terminal marker for typelists.
T
#define T
KDE
Definition: netsupp.cpp:1247
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
KMakeTypeList<>::Result
KDE::NullType Result
Definition: ktypelist.h:621
KMakeTypeList
This class template implements a compile-time algorithm for generating typelists.
Definition: ktypelist.h:585
KMakeTypeList::Result
KTypeList< T1, TailResult > Result
The resulting KTypeList calculated by this compile-time algorithm.
Definition: ktypelist.h:602
KTypeListIndexOf
This class template implements a compile-time algorithm for processing typelists.
Definition: ktypelist.h:535
KTypeListLength
This class template implements a compile-time algorithm for processing typelists.
Definition: ktypelist.h:485
KTypeList
The building block of typelists of any length.
Definition: ktypelist.h:454
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
This file is part of the KDE documentation.
Documentation copyright © 1996-2023 The KDE developers.
Generated on Mon Feb 20 2023 00:00:00 by doxygen 1.9.6 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.38 API Reference

Skip menu "kdelibs-4.14.38 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