SimpleITK  
sitkMemberFunctionFactoryBase.h
Go to the documentation of this file.
1 /*=========================================================================
2  *
3  * Copyright NumFOCUS
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0.txt
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  *=========================================================================*/
18 #ifndef sitkMemberFunctionFactoryBase_h
19 #define sitkMemberFunctionFactoryBase_h
20 
21 #include "sitkConfigure.h"
22 #include "sitkPixelIDTypes.h"
23 #include "sitkPixelIDTypeLists.h"
24 #include "sitkMacro.h"
25 #include "sitkNonCopyable.h"
26 
27 #include "Ancillary/type_list2.h"
28 #include "Ancillary/FunctionTraits.h"
29 
30 #include <unordered_map>
31 #include <functional>
32 #include <tuple>
33 
34 namespace itk::simple::detail
35 {
36 
37 // make hash function available in current name space to take priority
38 
39 template <typename T>
40 struct hash : public std::hash<T>
41 {};
42 
44 template <typename T>
45 inline void
46 hash_combine(std::size_t & seed, const T & val)
47 {
48  // Code from boost
49  // Reciprocal of the golden ratio helps spread entropy
50  // and handles duplicates.
51  std::hash<T> hasher;
52  seed ^= hasher(val) + 0x9e3779b9 + (seed << 6) + (seed >> 2);
53 }
54 
55 template <typename S, typename T>
56 struct hash<std::pair<S, T>>
57 {
58  inline size_t
59  operator()(const std::pair<S, T> & val) const
60  {
61  size_t seed = 0;
62  hash_combine(seed, val.first);
63  hash_combine(seed, val.second);
64  return seed;
65  }
66 };
67 
68 template <class... TupleArgs>
69 struct hash<std::tuple<TupleArgs...>>
70 {
71 private:
72  // recursive hashing of std::tuple from Sarang Baheti's blog
73  // https://www.variadic.xyz/2018/01/15/hashing-stdpair-and-stdtuple/
74  template <size_t Idx, typename... TupleTypes>
75  inline typename std::enable_if<Idx == sizeof...(TupleTypes), void>::type
76  hash_combine_tup(size_t &, const std::tuple<TupleTypes...> &) const
77  {}
78 
79  template <size_t Idx, typename... TupleTypes>
80  inline typename std::enable_if < Idx<sizeof...(TupleTypes), void>::type
81  hash_combine_tup(size_t & seed, const std::tuple<TupleTypes...> & tup) const
82  {
83  hash_combine(seed, std::get<Idx>(tup));
84 
85  // on to next element
86  hash_combine_tup<Idx + 1>(seed, tup);
87  }
88 
89 public:
90  size_t
91  operator()(std::tuple<TupleArgs...> tupleValue) const
92  {
93  size_t seed = 0;
94  hash_combine_tup<0>(seed, tupleValue);
95  return seed;
96  }
97 };
98 
99 
100 template <typename TMemberFunctionPointer,
101  typename TKey,
102  unsigned int TArity = ::detail::FunctionTraits<TMemberFunctionPointer>::arity>
104 
105 
112 template <typename TMemberFunctionPointer, typename TKey>
113 class MemberFunctionFactoryBase<TMemberFunctionPointer, TKey, 0> : protected NonCopyable
114 {
115 protected:
116  using MemberFunctionType = TMemberFunctionPointer;
117  using ObjectType = typename ::detail::FunctionTraits<MemberFunctionType>::ClassType;
118  using MemberFunctionResultType = typename ::detail::FunctionTraits<MemberFunctionType>::ResultType;
119 
120 
122  : m_PFunction(3 * typelist2::length<InstantiatedPixelIDTypeList>::value)
123  {}
124 
125 public:
129 
130 
131 protected:
132  using KeyType = TKey;
133 
138  static FunctionObjectType
139  BindObject(MemberFunctionType pfunc, ObjectType * objectPointer)
140  {
141  return [pfunc, objectPointer] { return std::invoke(pfunc, objectPointer); };
142  }
143 
144  using FunctionMapType = std::unordered_map<TKey, FunctionObjectType, hash<TKey>>;
145 
146  // maps of Keys to pointers to member functions
148 };
149 
150 
157 template <typename TMemberFunctionPointer, typename TKey>
158 class MemberFunctionFactoryBase<TMemberFunctionPointer, TKey, 1> : protected NonCopyable
159 {
160 protected:
161  using MemberFunctionType = TMemberFunctionPointer;
162  using ObjectType = typename ::detail::FunctionTraits<MemberFunctionType>::ClassType;
163  using MemberFunctionResultType = typename ::detail::FunctionTraits<MemberFunctionType>::ResultType;
164  using MemberFunctionArgumentType = typename ::detail::FunctionTraits<MemberFunctionType>::Argument0Type;
165 
166 
168  : m_PFunction(3 * typelist2::length<InstantiatedPixelIDTypeList>::value)
169  {}
170 
171 public:
175 
176 
177 protected:
178  using KeyType = TKey;
179 
184  static FunctionObjectType
185  BindObject(MemberFunctionType pfunc, ObjectType * objectPointer)
186  {
187 
188  return [pfunc, objectPointer](auto && PH1) -> MemberFunctionResultType {
189  return std::invoke(pfunc, objectPointer, std::forward<decltype(PH1)>(PH1));
190  };
191  }
192 
193 
194  using FunctionMapType = std::unordered_map<TKey, FunctionObjectType, hash<TKey>>;
195 
196  // maps of Keys to pointers to member functions
198 };
199 
200 
201 template <typename TMemberFunctionPointer, typename TKey>
202 class MemberFunctionFactoryBase<TMemberFunctionPointer, TKey, 2> : protected NonCopyable
203 {
204 protected:
205  using MemberFunctionType = TMemberFunctionPointer;
206  using MemberFunctionResultType = typename ::detail::FunctionTraits<MemberFunctionType>::ResultType;
207  using MemberFunctionArgument0Type = typename ::detail::FunctionTraits<MemberFunctionType>::Argument0Type;
208  using MemberFunctionArgument1Type = typename ::detail::FunctionTraits<MemberFunctionType>::Argument1Type;
209  using ObjectType = typename ::detail::FunctionTraits<MemberFunctionType>::ClassType;
210 
211 
213  : m_PFunction(3 * typelist2::length<InstantiatedPixelIDTypeList>::value)
214  {}
215 
216 public:
220  using FunctionObjectType =
222 
223 
224 protected:
225  using KeyType = TKey;
226 
231  static FunctionObjectType
232  BindObject(MemberFunctionType pfunc, ObjectType * objectPointer)
233  {
234  return [pfunc, objectPointer](auto && PH1, auto && PH2) {
235  return std::invoke(pfunc, objectPointer, std::forward<decltype(PH1)>(PH1), std::forward<decltype(PH2)>(PH2));
236  };
237  }
238 
239  using FunctionMapType = std::unordered_map<TKey, FunctionObjectType, hash<TKey>>;
240 
241  // maps of Keys to pointers to member functions
243 };
244 
245 
246 template <typename TMemberFunctionPointer, typename TKey>
247 class MemberFunctionFactoryBase<TMemberFunctionPointer, TKey, 3> : protected NonCopyable
248 {
249 protected:
250  using MemberFunctionType = TMemberFunctionPointer;
251  using MemberFunctionResultType = typename ::detail::FunctionTraits<MemberFunctionType>::ResultType;
252  using MemberFunctionArgument0Type = typename ::detail::FunctionTraits<MemberFunctionType>::Argument0Type;
253  using MemberFunctionArgument1Type = typename ::detail::FunctionTraits<MemberFunctionType>::Argument1Type;
254  using MemberFunctionArgument2Type = typename ::detail::FunctionTraits<MemberFunctionType>::Argument2Type;
255  using ObjectType = typename ::detail::FunctionTraits<MemberFunctionType>::ClassType;
256 
257 
259  : m_PFunction(3 * typelist2::length<InstantiatedPixelIDTypeList>::value)
260  {}
261 
262 public:
265  using FunctionObjectType = std::function<
267 
268 
269 protected:
270  using KeyType = TKey;
271 
276  static FunctionObjectType
277  BindObject(MemberFunctionType pfunc, ObjectType * objectPointer)
278  {
279  return [pfunc, objectPointer](auto && PH1, auto && PH2, auto && PH3) {
280  return std::invoke(pfunc,
281  objectPointer,
282  std::forward<decltype(PH1)>(PH1),
283  std::forward<decltype(PH2)>(PH2),
284  std::forward<decltype(PH3)>(PH3));
285  };
286  }
287 
288  using FunctionMapType = std::unordered_map<TKey, FunctionObjectType, hash<TKey>>;
289 
290  // maps of Keys to pointers to member functions
292 };
293 
294 
295 template <typename TMemberFunctionPointer, typename TKey>
296 class MemberFunctionFactoryBase<TMemberFunctionPointer, TKey, 4> : protected NonCopyable
297 {
298 protected:
299  using MemberFunctionType = TMemberFunctionPointer;
300  using MemberFunctionResultType = typename ::detail::FunctionTraits<MemberFunctionType>::ResultType;
301  using MemberFunctionArgument0Type = typename ::detail::FunctionTraits<MemberFunctionType>::Argument0Type;
302  using MemberFunctionArgument1Type = typename ::detail::FunctionTraits<MemberFunctionType>::Argument1Type;
303  using MemberFunctionArgument2Type = typename ::detail::FunctionTraits<MemberFunctionType>::Argument2Type;
304  using MemberFunctionArgument3Type = typename ::detail::FunctionTraits<MemberFunctionType>::Argument3Type;
305  using ObjectType = typename ::detail::FunctionTraits<MemberFunctionType>::ClassType;
306 
307 
309  : m_PFunction(3 * typelist2::length<InstantiatedPixelIDTypeList>::value)
310  {}
311 
312 public:
315  using FunctionObjectType = std::function<MemberFunctionResultType(MemberFunctionArgument0Type,
316  MemberFunctionArgument1Type,
317  MemberFunctionArgument2Type,
319 
320 
321 protected:
322  using KeyType = TKey;
323 
328  static FunctionObjectType
329  BindObject(MemberFunctionType pfunc, ObjectType * objectPointer)
330  {
331  return [pfunc, objectPointer](auto && PH1, auto && PH2, auto && PH3, auto && PH4) {
332  return std::invoke(pfunc,
333  objectPointer,
334  std::forward<decltype(PH1)>(PH1),
335  std::forward<decltype(PH2)>(PH2),
336  std::forward<decltype(PH3)>(PH3),
337  std::forward<decltype(PH4)>(PH4));
338  };
339  }
340 
341  using FunctionMapType = std::unordered_map<TKey, FunctionObjectType, hash<TKey>>;
342 
343  // maps of Keys to pointers to member functions
345 };
346 
347 template <typename TMemberFunctionPointer, typename TKey>
348 class MemberFunctionFactoryBase<TMemberFunctionPointer, TKey, 5> : protected NonCopyable
349 {
350 protected:
351  using MemberFunctionType = TMemberFunctionPointer;
352  using MemberFunctionResultType = typename ::detail::FunctionTraits<MemberFunctionType>::ResultType;
353  using MemberFunctionArgument0Type = typename ::detail::FunctionTraits<MemberFunctionType>::Argument0Type;
354  using MemberFunctionArgument1Type = typename ::detail::FunctionTraits<MemberFunctionType>::Argument1Type;
355  using MemberFunctionArgument2Type = typename ::detail::FunctionTraits<MemberFunctionType>::Argument2Type;
356  using MemberFunctionArgument3Type = typename ::detail::FunctionTraits<MemberFunctionType>::Argument3Type;
357  using MemberFunctionArgument4Type = typename ::detail::FunctionTraits<MemberFunctionType>::Argument4Type;
358  using ObjectType = typename ::detail::FunctionTraits<MemberFunctionType>::ClassType;
359 
360 
362  : m_PFunction(3 * typelist2::length<InstantiatedPixelIDTypeList>::value)
363  {}
364 
365 public:
368  typedef std::function<MemberFunctionResultType(MemberFunctionArgument0Type,
369  MemberFunctionArgument1Type,
370  MemberFunctionArgument2Type,
371  MemberFunctionArgument3Type,
372  MemberFunctionArgument4Type)>
374 
375 
376 protected:
377  using KeyType = TKey;
378 
383  static FunctionObjectType
384  BindObject(MemberFunctionType pfunc, ObjectType * objectPointer)
385  {
386  return [pfunc, objectPointer](auto && PH1, auto && PH2, auto && PH3, auto && PH4, auto && PH5) {
387  return std::invoke(pfunc,
388  objectPointer,
389  std::forward<decltype(PH1)>(PH1),
390  std::forward<decltype(PH2)>(PH2),
391  std::forward<decltype(PH3)>(PH3),
392  std::forward<decltype(PH4)>(PH4),
393  std::forward<decltype(PH5)>(PH5));
394  };
395  }
396 
397 
398  using FunctionMapType = std::unordered_map<TKey, FunctionObjectType, hash<TKey>>;
399 
400  // maps of Keys to pointers to member functions
402 };
403 
404 } // namespace itk::simple::detail
405 
406 #endif // sitkMemberFunctionFactoryBase_h
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 1 >::MemberFunctionResultType
typename ::detail::FunctionTraits< MemberFunctionType >::ResultType MemberFunctionResultType
Definition: sitkMemberFunctionFactoryBase.h:163
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 2 >::FunctionMapType
std::unordered_map< TKey, FunctionObjectType, hash< TKey > > FunctionMapType
Definition: sitkMemberFunctionFactoryBase.h:239
itk::simple::detail::hash
Definition: sitkMemberFunctionFactoryBase.h:40
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 5 >::FunctionObjectType
std::function< MemberFunctionResultType(MemberFunctionArgument0Type, MemberFunctionArgument1Type, MemberFunctionArgument2Type, MemberFunctionArgument3Type, MemberFunctionArgument4Type)> FunctionObjectType
Definition: sitkMemberFunctionFactoryBase.h:373
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 2 >::MemberFunctionArgument0Type
typename ::detail::FunctionTraits< MemberFunctionType >::Argument0Type MemberFunctionArgument0Type
Definition: sitkMemberFunctionFactoryBase.h:207
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 4 >::BindObject
static FunctionObjectType BindObject(MemberFunctionType pfunc, ObjectType *objectPointer)
Definition: sitkMemberFunctionFactoryBase.h:329
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 2 >::MemberFunctionResultType
typename ::detail::FunctionTraits< MemberFunctionType >::ResultType MemberFunctionResultType
Definition: sitkMemberFunctionFactoryBase.h:206
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 4 >::MemberFunctionType
TMemberFunctionPointer MemberFunctionType
Definition: sitkMemberFunctionFactoryBase.h:299
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 2 >::KeyType
TKey KeyType
Definition: sitkMemberFunctionFactoryBase.h:225
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 2 >::BindObject
static FunctionObjectType BindObject(MemberFunctionType pfunc, ObjectType *objectPointer)
Definition: sitkMemberFunctionFactoryBase.h:232
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 3 >::MemberFunctionFactoryBase
MemberFunctionFactoryBase()
Definition: sitkMemberFunctionFactoryBase.h:258
sitkNonCopyable.h
sitkPixelIDTypes.h
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 3 >::MemberFunctionArgument0Type
typename ::detail::FunctionTraits< MemberFunctionType >::Argument0Type MemberFunctionArgument0Type
Definition: sitkMemberFunctionFactoryBase.h:252
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 3 >::BindObject
static FunctionObjectType BindObject(MemberFunctionType pfunc, ObjectType *objectPointer)
Definition: sitkMemberFunctionFactoryBase.h:277
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 2 >::FunctionObjectType
std::function< MemberFunctionResultType(MemberFunctionArgument0Type, MemberFunctionArgument1Type)> FunctionObjectType
Definition: sitkMemberFunctionFactoryBase.h:221
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 0 >::FunctionObjectType
std::function< MemberFunctionResultType()> FunctionObjectType
Definition: sitkMemberFunctionFactoryBase.h:128
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 4 >::FunctionObjectType
std::function< MemberFunctionResultType(MemberFunctionArgument0Type, MemberFunctionArgument1Type, MemberFunctionArgument2Type, MemberFunctionArgument3Type)> FunctionObjectType
Definition: sitkMemberFunctionFactoryBase.h:318
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 2 >::ObjectType
typename ::detail::FunctionTraits< MemberFunctionType >::ClassType ObjectType
Definition: sitkMemberFunctionFactoryBase.h:209
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 3 >::m_PFunction
FunctionMapType m_PFunction
Definition: sitkMemberFunctionFactoryBase.h:291
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 5 >::MemberFunctionArgument0Type
typename ::detail::FunctionTraits< MemberFunctionType >::Argument0Type MemberFunctionArgument0Type
Definition: sitkMemberFunctionFactoryBase.h:353
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 0 >::FunctionMapType
std::unordered_map< TKey, FunctionObjectType, hash< TKey > > FunctionMapType
Definition: sitkMemberFunctionFactoryBase.h:144
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 4 >::ObjectType
typename ::detail::FunctionTraits< MemberFunctionType >::ClassType ObjectType
Definition: sitkMemberFunctionFactoryBase.h:305
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 4 >::m_PFunction
FunctionMapType m_PFunction
Definition: sitkMemberFunctionFactoryBase.h:344
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 5 >::MemberFunctionArgument3Type
typename ::detail::FunctionTraits< MemberFunctionType >::Argument3Type MemberFunctionArgument3Type
Definition: sitkMemberFunctionFactoryBase.h:356
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 3 >::FunctionMapType
std::unordered_map< TKey, FunctionObjectType, hash< TKey > > FunctionMapType
Definition: sitkMemberFunctionFactoryBase.h:288
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 5 >::BindObject
static FunctionObjectType BindObject(MemberFunctionType pfunc, ObjectType *objectPointer)
Definition: sitkMemberFunctionFactoryBase.h:384
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 0 >::MemberFunctionFactoryBase
MemberFunctionFactoryBase()
Definition: sitkMemberFunctionFactoryBase.h:121
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 1 >::MemberFunctionType
TMemberFunctionPointer MemberFunctionType
Definition: sitkMemberFunctionFactoryBase.h:161
itk::simple::detail
Definition: sitkDetail.h:24
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 3 >::FunctionObjectType
std::function< MemberFunctionResultType(MemberFunctionArgument0Type, MemberFunctionArgument1Type, MemberFunctionArgument2Type)> FunctionObjectType
Definition: sitkMemberFunctionFactoryBase.h:266
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 1 >::MemberFunctionFactoryBase
MemberFunctionFactoryBase()
Definition: sitkMemberFunctionFactoryBase.h:167
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 5 >::MemberFunctionArgument2Type
typename ::detail::FunctionTraits< MemberFunctionType >::Argument2Type MemberFunctionArgument2Type
Definition: sitkMemberFunctionFactoryBase.h:355
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 4 >::MemberFunctionArgument3Type
typename ::detail::FunctionTraits< MemberFunctionType >::Argument3Type MemberFunctionArgument3Type
Definition: sitkMemberFunctionFactoryBase.h:304
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 2 >::MemberFunctionType
TMemberFunctionPointer MemberFunctionType
Definition: sitkMemberFunctionFactoryBase.h:205
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 0 >::MemberFunctionType
TMemberFunctionPointer MemberFunctionType
Definition: sitkMemberFunctionFactoryBase.h:116
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 1 >::m_PFunction
FunctionMapType m_PFunction
Definition: sitkMemberFunctionFactoryBase.h:197
itk::simple::detail::hash< std::pair< S, T > >::operator()
size_t operator()(const std::pair< S, T > &val) const
Definition: sitkMemberFunctionFactoryBase.h:59
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 2 >::MemberFunctionFactoryBase
MemberFunctionFactoryBase()
Definition: sitkMemberFunctionFactoryBase.h:212
sitkMacro.h
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 5 >::MemberFunctionArgument4Type
typename ::detail::FunctionTraits< MemberFunctionType >::Argument4Type MemberFunctionArgument4Type
Definition: sitkMemberFunctionFactoryBase.h:357
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 3 >::MemberFunctionArgument2Type
typename ::detail::FunctionTraits< MemberFunctionType >::Argument2Type MemberFunctionArgument2Type
Definition: sitkMemberFunctionFactoryBase.h:254
itk::simple::NonCopyable
An inheritable class to disable copying of a class.
Definition: sitkNonCopyable.h:49
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 0 >::m_PFunction
FunctionMapType m_PFunction
Definition: sitkMemberFunctionFactoryBase.h:147
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 4 >::KeyType
TKey KeyType
Definition: sitkMemberFunctionFactoryBase.h:322
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 5 >::MemberFunctionArgument1Type
typename ::detail::FunctionTraits< MemberFunctionType >::Argument1Type MemberFunctionArgument1Type
Definition: sitkMemberFunctionFactoryBase.h:354
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 3 >::MemberFunctionResultType
typename ::detail::FunctionTraits< MemberFunctionType >::ResultType MemberFunctionResultType
Definition: sitkMemberFunctionFactoryBase.h:251
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 4 >::MemberFunctionResultType
typename ::detail::FunctionTraits< MemberFunctionType >::ResultType MemberFunctionResultType
Definition: sitkMemberFunctionFactoryBase.h:300
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 1 >::MemberFunctionArgumentType
typename ::detail::FunctionTraits< MemberFunctionType >::Argument0Type MemberFunctionArgumentType
Definition: sitkMemberFunctionFactoryBase.h:164
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 0 >::MemberFunctionResultType
typename ::detail::FunctionTraits< MemberFunctionType >::ResultType MemberFunctionResultType
Definition: sitkMemberFunctionFactoryBase.h:118
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 3 >::ObjectType
typename ::detail::FunctionTraits< MemberFunctionType >::ClassType ObjectType
Definition: sitkMemberFunctionFactoryBase.h:255
itk::simple::InstantiatedPixelIDTypeList
AllPixelIDTypeList InstantiatedPixelIDTypeList
Definition: sitkPixelIDTypeLists.h:205
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 5 >::FunctionMapType
std::unordered_map< TKey, FunctionObjectType, hash< TKey > > FunctionMapType
Definition: sitkMemberFunctionFactoryBase.h:398
itk::simple::detail::hash< std::tuple< TupleArgs... > >::hash_combine_tup
std::enable_if< Idx==sizeof...(TupleTypes), void >::type hash_combine_tup(size_t &, const std::tuple< TupleTypes... > &) const
Definition: sitkMemberFunctionFactoryBase.h:76
itk::simple::detail::hash_combine
void hash_combine(std::size_t &seed, const T &val)
Definition: sitkMemberFunctionFactoryBase.h:46
sitkConfigure.h
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 1 >::BindObject
static FunctionObjectType BindObject(MemberFunctionType pfunc, ObjectType *objectPointer)
Definition: sitkMemberFunctionFactoryBase.h:185
sitkPixelIDTypeLists.h
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 1 >::FunctionMapType
std::unordered_map< TKey, FunctionObjectType, hash< TKey > > FunctionMapType
Definition: sitkMemberFunctionFactoryBase.h:194
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 0 >::ObjectType
typename ::detail::FunctionTraits< MemberFunctionType >::ClassType ObjectType
Definition: sitkMemberFunctionFactoryBase.h:117
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 4 >::FunctionMapType
std::unordered_map< TKey, FunctionObjectType, hash< TKey > > FunctionMapType
Definition: sitkMemberFunctionFactoryBase.h:341
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 2 >::MemberFunctionArgument1Type
typename ::detail::FunctionTraits< MemberFunctionType >::Argument1Type MemberFunctionArgument1Type
Definition: sitkMemberFunctionFactoryBase.h:208
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 5 >::MemberFunctionType
TMemberFunctionPointer MemberFunctionType
Definition: sitkMemberFunctionFactoryBase.h:351
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 4 >::MemberFunctionArgument1Type
typename ::detail::FunctionTraits< MemberFunctionType >::Argument1Type MemberFunctionArgument1Type
Definition: sitkMemberFunctionFactoryBase.h:302
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 0 >::KeyType
TKey KeyType
Definition: sitkMemberFunctionFactoryBase.h:132
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 3 >::MemberFunctionType
TMemberFunctionPointer MemberFunctionType
Definition: sitkMemberFunctionFactoryBase.h:250
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 5 >::m_PFunction
FunctionMapType m_PFunction
Definition: sitkMemberFunctionFactoryBase.h:401
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 4 >::MemberFunctionArgument2Type
typename ::detail::FunctionTraits< MemberFunctionType >::Argument2Type MemberFunctionArgument2Type
Definition: sitkMemberFunctionFactoryBase.h:303
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 1 >::ObjectType
typename ::detail::FunctionTraits< MemberFunctionType >::ClassType ObjectType
Definition: sitkMemberFunctionFactoryBase.h:162
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 2 >::m_PFunction
FunctionMapType m_PFunction
Definition: sitkMemberFunctionFactoryBase.h:242
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 5 >::KeyType
TKey KeyType
Definition: sitkMemberFunctionFactoryBase.h:377
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 1 >::KeyType
TKey KeyType
Definition: sitkMemberFunctionFactoryBase.h:178
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 4 >::MemberFunctionArgument0Type
typename ::detail::FunctionTraits< MemberFunctionType >::Argument0Type MemberFunctionArgument0Type
Definition: sitkMemberFunctionFactoryBase.h:301
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 5 >::ObjectType
typename ::detail::FunctionTraits< MemberFunctionType >::ClassType ObjectType
Definition: sitkMemberFunctionFactoryBase.h:358
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 1 >::FunctionObjectType
std::function< MemberFunctionResultType(MemberFunctionArgumentType)> FunctionObjectType
Definition: sitkMemberFunctionFactoryBase.h:174
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 0 >::BindObject
static FunctionObjectType BindObject(MemberFunctionType pfunc, ObjectType *objectPointer)
Definition: sitkMemberFunctionFactoryBase.h:139
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 5 >::MemberFunctionFactoryBase
MemberFunctionFactoryBase()
Definition: sitkMemberFunctionFactoryBase.h:361
itk::simple::detail::MemberFunctionFactoryBase
A base class for the MemberFunctionFactory.
Definition: sitkMemberFunctionFactoryBase.h:103
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 5 >::MemberFunctionResultType
typename ::detail::FunctionTraits< MemberFunctionType >::ResultType MemberFunctionResultType
Definition: sitkMemberFunctionFactoryBase.h:352
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 4 >::MemberFunctionFactoryBase
MemberFunctionFactoryBase()
Definition: sitkMemberFunctionFactoryBase.h:308
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 3 >::KeyType
TKey KeyType
Definition: sitkMemberFunctionFactoryBase.h:270
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 3 >::MemberFunctionArgument1Type
typename ::detail::FunctionTraits< MemberFunctionType >::Argument1Type MemberFunctionArgument1Type
Definition: sitkMemberFunctionFactoryBase.h:253