Jpp test-rotations-old
the software that should make you happy
Loading...
Searching...
No Matches
JMapList.hh
Go to the documentation of this file.
1#ifndef __JTOOLS__JMAPLIST__
2#define __JTOOLS__JMAPLIST__
3
4#include "JLang/JNullType.hh"
5#include "JTools/JDistance.hh"
6
7
8/**
9 * \author mdejong
10 */
11
12namespace JTOOLS {}
13namespace JPP { using namespace JTOOLS; }
14
15namespace JTOOLS {
16
17 using JLANG::JNullType;
18
19
20 /**
21 * Map list.
22 */
23 template<template<class, class, class> class JHead_t, class JTail_t = JNullType>
24 struct JMapList
25 {
27 typedef typename JTail_t::tail_type tail_type; //!< last map
28 };
29
30
31 /**
32 * Terminator class of map list.
33 */
34 template<template<class, class, class> class JHead_t>
35 struct JMapList<JHead_t, JNullType>
36 {
37 typedef JNullType head_list; //!< first N-1 maps
38 typedef JMapList<JHead_t> tail_type; //!< last map
39 };
40
41
42 /**
43 * Length of map list.
44 */
45 template<class JMaplist_t> struct JMapLength {};
46
47
48 /**
49 * Recursive length of map list.
50 */
51 template<template<class, class, class> class JHead_t, class JTail_t>
52 struct JMapLength< JMapList<JHead_t, JTail_t> >
53 {
54 enum { value = 1 + JMapLength<JTail_t>::value };
55 };
56
57
58 /**
59 * Terminator class of length of map list.
60 */
61 template<template<class, class, class> class JHead_t>
62 struct JMapLength< JMapList<JHead_t, JNullType> >
63 {
64 enum { value = 1 };
65 };
66
67
68 /**
69 * Auxiliary class for no map definition.
70 * This class can be used to terminate a map list, define a default template argument, etc.
71 */
72 template<class JKey_t,
73 class JValue_t,
74 class JDistance_t = JDistance<JKey_t> >
75 struct JNullMap {};
76
77
78 /**
79 * Auxiliary class for recursive map list generation.
80 * This class accepts up to 26 map types.
81 */
82 template<template<class, class, class> class A = JNullMap,
83 template<class, class, class> class B = JNullMap,
84 template<class, class, class> class C = JNullMap,
85 template<class, class, class> class D = JNullMap,
86 template<class, class, class> class E = JNullMap,
87 template<class, class, class> class F = JNullMap,
88 template<class, class, class> class G = JNullMap,
89 template<class, class, class> class H = JNullMap,
90 template<class, class, class> class I = JNullMap,
91 template<class, class, class> class J = JNullMap,
92 template<class, class, class> class K = JNullMap,
93 template<class, class, class> class L = JNullMap,
94 template<class, class, class> class M = JNullMap,
95 template<class, class, class> class N = JNullMap,
96 template<class, class, class> class O = JNullMap,
97 template<class, class, class> class P = JNullMap,
98 template<class, class, class> class Q = JNullMap,
99 template<class, class, class> class R = JNullMap,
100 template<class, class, class> class S = JNullMap,
101 template<class, class, class> class T = JNullMap,
102 template<class, class, class> class U = JNullMap,
103 template<class, class, class> class V = JNullMap,
104 template<class, class, class> class W = JNullMap,
105 template<class, class, class> class X = JNullMap,
106 template<class, class, class> class Y = JNullMap,
107 template<class, class, class> class Z = JNullMap>
112
113
114 /**
115 * Template specialisation to terminate recursive map list generation.
116 */
117 template<template<class, class, class> class A>
118 struct JMAPLIST<A,
119 JNullMap,
120 JNullMap,
121 JNullMap,
122 JNullMap,
123 JNullMap,
124 JNullMap,
125 JNullMap,
126 JNullMap,
127 JNullMap,
128 JNullMap,
129 JNullMap,
130 JNullMap,
131 JNullMap,
132 JNullMap,
133 JNullMap,
134 JNullMap,
135 JNullMap,
136 JNullMap,
137 JNullMap,
138 JNullMap,
139 JNullMap,
140 JNullMap,
141 JNullMap,
142 JNullMap,
143 JNullMap>
144 {
145 typedef JMapList<A> maplist; //!< Map list
146 };
147}
148
149#endif
static const uint32_t K[64]
Definition crypt.cc:77
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
Auxiliary classes and methods for multi-dimensional interpolations and histograms.
Auxiliary class for no type definition.
Definition JNullType.hh:19
Template class for distance evaluation.
Definition JDistance.hh:24
Auxiliary class for recursive map list generation.
Definition JMapList.hh:109
JMapList< A, typename JMAPLIST< B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z >::maplist > maplist
Map list.
Definition JMapList.hh:110
Length of map list.
Definition JMapList.hh:45
JNullType head_list
first N-1 maps
Definition JMapList.hh:37
JMapList< JHead_t > tail_type
last map
Definition JMapList.hh:38
Map list.
Definition JMapList.hh:25
JMapList< JHead_t, typename JTail_t::head_list > head_list
first N-1 maps
Definition JMapList.hh:26
JTail_t::tail_type tail_type
last map
Definition JMapList.hh:27
Auxiliary class for no map definition.
Definition JMapList.hh:75