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 // make hash function available in current name space to take priority
37 
38 template <typename T> struct hash : public std::hash<T>{};
39 
41 template<typename T>
42 inline void hash_combine(std::size_t& seed, const T& val)
43 {
44  // Code from boost
45  // Reciprocal of the golden ratio helps spread entropy
46  // and handles duplicates.
47  std::hash<T> hasher;
48  seed ^= hasher(val) + 0x9e3779b9 + (seed << 6) + (seed >> 2);
49 }
50 
51 template<typename S, typename T>
52 struct hash<std::pair<S, T>>
53 {
54  inline size_t operator()(const std::pair<S, T>& val) const
55  {
56  size_t seed = 0;
57  hash_combine(seed, val.first);
58  hash_combine(seed, val.second);
59  return seed;
60  }
61 };
62 
63 template<class... TupleArgs>
64 struct hash<std::tuple<TupleArgs...>>
65 {
66 private:
67  // recursive hashing of std::tuple from Sarang Baheti's blog
68  // https://www.variadic.xyz/2018/01/15/hashing-stdpair-and-stdtuple/
69  template<size_t Idx, typename... TupleTypes>
70  inline typename std::enable_if<Idx == sizeof...(TupleTypes), void>::type
71  hash_combine_tup(size_t&, const std::tuple<TupleTypes...>&) const {}
72 
73  template<size_t Idx, typename... TupleTypes>
74  inline typename std::enable_if<Idx < sizeof...(TupleTypes), void>::type
75  hash_combine_tup(size_t& seed, const std::tuple<TupleTypes...>& tup) const
76  {
77  hash_combine(seed, std::get<Idx>(tup));
78 
79  // on to next element
80  hash_combine_tup<Idx+1>(seed, tup);
81  }
82 
83 public:
84  size_t operator()(std::tuple<TupleArgs...> tupleValue) const
85  {
86  size_t seed = 0;
87  hash_combine_tup<0>(seed, tupleValue);
88  return seed;
89  }
90 };
91 
92 
93 template< typename TMemberFunctionPointer,
94  typename TKey,
95  unsigned int TArity = ::detail::FunctionTraits<TMemberFunctionPointer>::arity>
97 
98 
105 template< typename TMemberFunctionPointer, typename TKey>
106 class MemberFunctionFactoryBase<TMemberFunctionPointer, TKey, 0> :
107  protected NonCopyable
108 {
109 protected:
110 
111  using MemberFunctionType = TMemberFunctionPointer;
112  using ObjectType = typename ::detail::FunctionTraits<MemberFunctionType>::ClassType;
113  using MemberFunctionResultType = typename ::detail::FunctionTraits<MemberFunctionType>::ResultType;
114 
115 
117  : m_PFunction( 3*typelist2::length<InstantiatedPixelIDTypeList>::value )
118  { }
119 
120 public:
121 
124  using FunctionObjectType = std::function< MemberFunctionResultType ( ) >;
125 
126 
127 protected:
128 
129  using KeyType = TKey;
130 
136  {
137  return [pfunc, objectPointer]{ return std::invoke(pfunc, objectPointer); };
138  }
139 
140  using FunctionMapType = std::unordered_map< TKey, FunctionObjectType, hash<TKey> >;
141 
142  // maps of Keys to pointers to member functions
144 
145 
146 };
147 
148 
155 template< typename TMemberFunctionPointer, typename TKey>
156 class MemberFunctionFactoryBase<TMemberFunctionPointer, TKey, 1> :
157  protected NonCopyable
158 {
159 protected:
160 
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:
172 
176 
177 
178 protected:
179 
180  using KeyType = TKey;
181 
187  {
188 
189  return [pfunc, objectPointer](auto && PH1) -> MemberFunctionResultType {
190  return std::invoke(pfunc, objectPointer, std::forward<decltype(PH1)>(PH1));
191  };
192  }
193 
194 
195  using FunctionMapType = std::unordered_map< TKey, FunctionObjectType, hash<TKey> >;
196 
197  // maps of Keys to pointers to member functions
199 
200 };
201 
202 
203 template< typename TMemberFunctionPointer, typename TKey>
204 class MemberFunctionFactoryBase<TMemberFunctionPointer, TKey, 2> :
205  protected NonCopyable
206 {
207 protected:
208 
209  using MemberFunctionType = TMemberFunctionPointer;
210  using MemberFunctionResultType = typename ::detail::FunctionTraits<MemberFunctionType>::ResultType;
211  using MemberFunctionArgument0Type = typename ::detail::FunctionTraits<MemberFunctionType>::Argument0Type;
212  using MemberFunctionArgument1Type = typename ::detail::FunctionTraits<MemberFunctionType>::Argument1Type;
213  using ObjectType = typename ::detail::FunctionTraits<MemberFunctionType>::ClassType;
214 
215 
217  : m_PFunction( 3 * typelist2::length<InstantiatedPixelIDTypeList>::value )
218  { }
219 
220 public:
221 
226 
227 
228 protected:
229 
230  using KeyType = TKey;
231 
237  {
238  return [pfunc, objectPointer] (auto &&PH1, auto &&PH2){
239  return std::invoke(pfunc, objectPointer, std::forward<decltype(PH1)>(PH1), std::forward<decltype(PH2)>(PH2));
240  };
241  }
242 
243  using FunctionMapType = std::unordered_map< TKey, FunctionObjectType, hash<TKey> >;
244 
245  // maps of Keys to pointers to member functions
247 
248 };
249 
250 
251 template< typename TMemberFunctionPointer, typename TKey>
252 class MemberFunctionFactoryBase<TMemberFunctionPointer, TKey, 3> :
253  protected NonCopyable
254 {
255 protected:
256 
257  using MemberFunctionType = TMemberFunctionPointer;
258  using MemberFunctionResultType = typename ::detail::FunctionTraits<MemberFunctionType>::ResultType;
259  using MemberFunctionArgument0Type = typename ::detail::FunctionTraits<MemberFunctionType>::Argument0Type;
260  using MemberFunctionArgument1Type = typename ::detail::FunctionTraits<MemberFunctionType>::Argument1Type;
261  using MemberFunctionArgument2Type = typename ::detail::FunctionTraits<MemberFunctionType>::Argument2Type;
262  using ObjectType = typename ::detail::FunctionTraits<MemberFunctionType>::ClassType;
263 
264 
266  : m_PFunction( 3 * typelist2::length<InstantiatedPixelIDTypeList>::value )
267  { }
268 
269 public:
270 
274 
275 
276 protected:
277 
278  using KeyType = TKey;
279 
285  {
286  return [pfunc, objectPointer](auto && PH1, auto && PH2, auto && PH3) {
287  return std::invoke(pfunc,
288  objectPointer,
289  std::forward<decltype(PH1)>(PH1),
290  std::forward<decltype(PH2)>(PH2),
291  std::forward<decltype(PH3)>(PH3));
292  };
293  }
294 
295  using FunctionMapType = std::unordered_map< TKey, FunctionObjectType, hash<TKey> >;
296 
297  // maps of Keys to pointers to member functions
299 
300 };
301 
302 
303 template< typename TMemberFunctionPointer, typename TKey>
304 class MemberFunctionFactoryBase<TMemberFunctionPointer, TKey, 4> :
305  protected NonCopyable
306 {
307 protected:
308 
309  using MemberFunctionType = TMemberFunctionPointer;
310  using MemberFunctionResultType = typename ::detail::FunctionTraits<MemberFunctionType>::ResultType;
311  using MemberFunctionArgument0Type = typename ::detail::FunctionTraits<MemberFunctionType>::Argument0Type;
312  using MemberFunctionArgument1Type = typename ::detail::FunctionTraits<MemberFunctionType>::Argument1Type;
313  using MemberFunctionArgument2Type = typename ::detail::FunctionTraits<MemberFunctionType>::Argument2Type;
314  using MemberFunctionArgument3Type = typename ::detail::FunctionTraits<MemberFunctionType>::Argument3Type;
315  using ObjectType = typename ::detail::FunctionTraits<MemberFunctionType>::ClassType;
316 
317 
319  : m_PFunction( 3 * typelist2::length<InstantiatedPixelIDTypeList>::value )
320  { }
321 
322 public:
323 
327 
328 
329 protected:
330 
331  using KeyType = TKey;
332 
338  {
339  return [pfunc, objectPointer](auto && PH1, auto && PH2, auto && PH3, auto && PH4) {
340  return std::invoke(pfunc,
341  objectPointer,
342  std::forward<decltype(PH1)>(PH1),
343  std::forward<decltype(PH2)>(PH2),
344  std::forward<decltype(PH3)>(PH3),
345  std::forward<decltype(PH4)>(PH4));
346  };
347  }
348 
349  using FunctionMapType = std::unordered_map< TKey, FunctionObjectType, hash<TKey> >;
350 
351  // maps of Keys to pointers to member functions
353 
354 };
355 
356 template< typename TMemberFunctionPointer, typename TKey>
357 class MemberFunctionFactoryBase<TMemberFunctionPointer, TKey, 5> :
358  protected NonCopyable
359 {
360 protected:
361 
362  using MemberFunctionType = TMemberFunctionPointer;
363  using MemberFunctionResultType = typename ::detail::FunctionTraits<MemberFunctionType>::ResultType;
364  using MemberFunctionArgument0Type = typename ::detail::FunctionTraits<MemberFunctionType>::Argument0Type;
365  using MemberFunctionArgument1Type = typename ::detail::FunctionTraits<MemberFunctionType>::Argument1Type;
366  using MemberFunctionArgument2Type = typename ::detail::FunctionTraits<MemberFunctionType>::Argument2Type;
367  using MemberFunctionArgument3Type = typename ::detail::FunctionTraits<MemberFunctionType>::Argument3Type;
368  using MemberFunctionArgument4Type = typename ::detail::FunctionTraits<MemberFunctionType>::Argument4Type;
369  using ObjectType = typename ::detail::FunctionTraits<MemberFunctionType>::ClassType;
370 
371 
373  : m_PFunction( 3 * typelist2::length<InstantiatedPixelIDTypeList>::value )
374  { }
375 
376 public:
377 
380  typedef std::function< MemberFunctionResultType (
381  MemberFunctionArgument0Type,
382  MemberFunctionArgument1Type,
383  MemberFunctionArgument2Type,
384  MemberFunctionArgument3Type,
385  MemberFunctionArgument4Type ) >
387 
388 
389 protected:
390 
391  using KeyType = TKey;
392 
398  {
399  return [pfunc, objectPointer](auto && PH1, auto && PH2, auto && PH3, auto && PH4, auto && PH5) {
400  return std::invoke(pfunc,
401  objectPointer,
402  std::forward<decltype(PH1)>(PH1),
403  std::forward<decltype(PH2)>(PH2),
404  std::forward<decltype(PH3)>(PH3),
405  std::forward<decltype(PH4)>(PH4),
406  std::forward<decltype(PH5)>(PH5));
407  };
408  }
409 
410 
411  using FunctionMapType = std::unordered_map< TKey, FunctionObjectType, hash<TKey> >;
412 
413  // maps of Keys to pointers to member functions
415 
416 
417 };
418 
419 }
420 
421 #endif // sitkMemberFunctionFactoryBase_h
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 1 >::MemberFunctionResultType
typename ::detail::FunctionTraits< MemberFunctionType >::ResultType MemberFunctionResultType
Definition: sitkMemberFunctionFactoryBase.h:163
itk::simple::detail::hash
Definition: sitkMemberFunctionFactoryBase.h:38
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 2 >::MemberFunctionArgument0Type
typename ::detail::FunctionTraits< MemberFunctionType >::Argument0Type MemberFunctionArgument0Type
Definition: sitkMemberFunctionFactoryBase.h:211
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 4 >::BindObject
static FunctionObjectType BindObject(MemberFunctionType pfunc, ObjectType *objectPointer)
Definition: sitkMemberFunctionFactoryBase.h:337
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 5 >::FunctionMapType
std::unordered_map< TKey, FunctionObjectType, hash< TKey > > FunctionMapType
Definition: sitkMemberFunctionFactoryBase.h:411
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 3 >::FunctionObjectType
std::function< MemberFunctionResultType(MemberFunctionArgument0Type, MemberFunctionArgument1Type, MemberFunctionArgument2Type) > FunctionObjectType
Definition: sitkMemberFunctionFactoryBase.h:273
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 2 >::MemberFunctionResultType
typename ::detail::FunctionTraits< MemberFunctionType >::ResultType MemberFunctionResultType
Definition: sitkMemberFunctionFactoryBase.h:210
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 4 >::MemberFunctionType
TMemberFunctionPointer MemberFunctionType
Definition: sitkMemberFunctionFactoryBase.h:309
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 2 >::KeyType
TKey KeyType
Definition: sitkMemberFunctionFactoryBase.h:230
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 2 >::BindObject
static FunctionObjectType BindObject(MemberFunctionType pfunc, ObjectType *objectPointer)
Definition: sitkMemberFunctionFactoryBase.h:236
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 3 >::MemberFunctionFactoryBase
MemberFunctionFactoryBase()
Definition: sitkMemberFunctionFactoryBase.h:265
sitkNonCopyable.h
sitkPixelIDTypes.h
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 3 >::MemberFunctionArgument0Type
typename ::detail::FunctionTraits< MemberFunctionType >::Argument0Type MemberFunctionArgument0Type
Definition: sitkMemberFunctionFactoryBase.h:259
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 3 >::BindObject
static FunctionObjectType BindObject(MemberFunctionType pfunc, ObjectType *objectPointer)
Definition: sitkMemberFunctionFactoryBase.h:284
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 2 >::ObjectType
typename ::detail::FunctionTraits< MemberFunctionType >::ClassType ObjectType
Definition: sitkMemberFunctionFactoryBase.h:213
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 3 >::m_PFunction
FunctionMapType m_PFunction
Definition: sitkMemberFunctionFactoryBase.h:298
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 5 >::MemberFunctionArgument0Type
typename ::detail::FunctionTraits< MemberFunctionType >::Argument0Type MemberFunctionArgument0Type
Definition: sitkMemberFunctionFactoryBase.h:364
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 2 >::FunctionObjectType
std::function< MemberFunctionResultType(MemberFunctionArgument0Type, MemberFunctionArgument1Type) > FunctionObjectType
Definition: sitkMemberFunctionFactoryBase.h:225
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 4 >::ObjectType
typename ::detail::FunctionTraits< MemberFunctionType >::ClassType ObjectType
Definition: sitkMemberFunctionFactoryBase.h:315
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 4 >::m_PFunction
FunctionMapType m_PFunction
Definition: sitkMemberFunctionFactoryBase.h:352
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 5 >::MemberFunctionArgument3Type
typename ::detail::FunctionTraits< MemberFunctionType >::Argument3Type MemberFunctionArgument3Type
Definition: sitkMemberFunctionFactoryBase.h:367
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 5 >::BindObject
static FunctionObjectType BindObject(MemberFunctionType pfunc, ObjectType *objectPointer)
Definition: sitkMemberFunctionFactoryBase.h:397
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 0 >::MemberFunctionFactoryBase
MemberFunctionFactoryBase()
Definition: sitkMemberFunctionFactoryBase.h:116
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, 1 >::MemberFunctionFactoryBase
MemberFunctionFactoryBase()
Definition: sitkMemberFunctionFactoryBase.h:167
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 4 >::FunctionObjectType
std::function< MemberFunctionResultType(MemberFunctionArgument0Type, MemberFunctionArgument1Type, MemberFunctionArgument2Type, MemberFunctionArgument3Type) > FunctionObjectType
Definition: sitkMemberFunctionFactoryBase.h:326
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 5 >::MemberFunctionArgument2Type
typename ::detail::FunctionTraits< MemberFunctionType >::Argument2Type MemberFunctionArgument2Type
Definition: sitkMemberFunctionFactoryBase.h:366
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 4 >::MemberFunctionArgument3Type
typename ::detail::FunctionTraits< MemberFunctionType >::Argument3Type MemberFunctionArgument3Type
Definition: sitkMemberFunctionFactoryBase.h:314
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 2 >::MemberFunctionType
TMemberFunctionPointer MemberFunctionType
Definition: sitkMemberFunctionFactoryBase.h:209
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 0 >::MemberFunctionType
TMemberFunctionPointer MemberFunctionType
Definition: sitkMemberFunctionFactoryBase.h:111
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 1 >::m_PFunction
FunctionMapType m_PFunction
Definition: sitkMemberFunctionFactoryBase.h:198
itk::simple::detail::hash< std::pair< S, T > >::operator()
size_t operator()(const std::pair< S, T > &val) const
Definition: sitkMemberFunctionFactoryBase.h:54
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 2 >::MemberFunctionFactoryBase
MemberFunctionFactoryBase()
Definition: sitkMemberFunctionFactoryBase.h:216
sitkMacro.h
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 5 >::MemberFunctionArgument4Type
typename ::detail::FunctionTraits< MemberFunctionType >::Argument4Type MemberFunctionArgument4Type
Definition: sitkMemberFunctionFactoryBase.h:368
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 3 >::MemberFunctionArgument2Type
typename ::detail::FunctionTraits< MemberFunctionType >::Argument2Type MemberFunctionArgument2Type
Definition: sitkMemberFunctionFactoryBase.h:261
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:143
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 0 >::FunctionMapType
std::unordered_map< TKey, FunctionObjectType, hash< TKey > > FunctionMapType
Definition: sitkMemberFunctionFactoryBase.h:140
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 3 >::FunctionMapType
std::unordered_map< TKey, FunctionObjectType, hash< TKey > > FunctionMapType
Definition: sitkMemberFunctionFactoryBase.h:295
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 4 >::KeyType
TKey KeyType
Definition: sitkMemberFunctionFactoryBase.h:331
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 5 >::MemberFunctionArgument1Type
typename ::detail::FunctionTraits< MemberFunctionType >::Argument1Type MemberFunctionArgument1Type
Definition: sitkMemberFunctionFactoryBase.h:365
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 5 >::FunctionObjectType
std::function< MemberFunctionResultType(MemberFunctionArgument0Type, MemberFunctionArgument1Type, MemberFunctionArgument2Type, MemberFunctionArgument3Type, MemberFunctionArgument4Type) > FunctionObjectType
Definition: sitkMemberFunctionFactoryBase.h:386
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 3 >::MemberFunctionResultType
typename ::detail::FunctionTraits< MemberFunctionType >::ResultType MemberFunctionResultType
Definition: sitkMemberFunctionFactoryBase.h:258
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 4 >::MemberFunctionResultType
typename ::detail::FunctionTraits< MemberFunctionType >::ResultType MemberFunctionResultType
Definition: sitkMemberFunctionFactoryBase.h:310
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:113
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 3 >::ObjectType
typename ::detail::FunctionTraits< MemberFunctionType >::ClassType ObjectType
Definition: sitkMemberFunctionFactoryBase.h:262
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 0 >::FunctionObjectType
std::function< MemberFunctionResultType() > FunctionObjectType
Definition: sitkMemberFunctionFactoryBase.h:124
itk::simple::InstantiatedPixelIDTypeList
AllPixelIDTypeList InstantiatedPixelIDTypeList
Definition: sitkPixelIDTypeLists.h:205
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:71
itk::simple::detail::hash_combine
void hash_combine(std::size_t &seed, const T &val)
Definition: sitkMemberFunctionFactoryBase.h:42
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 2 >::FunctionMapType
std::unordered_map< TKey, FunctionObjectType, hash< TKey > > FunctionMapType
Definition: sitkMemberFunctionFactoryBase.h:243
sitkConfigure.h
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 1 >::BindObject
static FunctionObjectType BindObject(MemberFunctionType pfunc, ObjectType *objectPointer)
Definition: sitkMemberFunctionFactoryBase.h:186
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 4 >::FunctionMapType
std::unordered_map< TKey, FunctionObjectType, hash< TKey > > FunctionMapType
Definition: sitkMemberFunctionFactoryBase.h:349
sitkPixelIDTypeLists.h
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 1 >::FunctionObjectType
std::function< MemberFunctionResultType(MemberFunctionArgumentType) > FunctionObjectType
Definition: sitkMemberFunctionFactoryBase.h:175
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 0 >::ObjectType
typename ::detail::FunctionTraits< MemberFunctionType >::ClassType ObjectType
Definition: sitkMemberFunctionFactoryBase.h:112
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 2 >::MemberFunctionArgument1Type
typename ::detail::FunctionTraits< MemberFunctionType >::Argument1Type MemberFunctionArgument1Type
Definition: sitkMemberFunctionFactoryBase.h:212
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 5 >::MemberFunctionType
TMemberFunctionPointer MemberFunctionType
Definition: sitkMemberFunctionFactoryBase.h:362
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 4 >::MemberFunctionArgument1Type
typename ::detail::FunctionTraits< MemberFunctionType >::Argument1Type MemberFunctionArgument1Type
Definition: sitkMemberFunctionFactoryBase.h:312
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 0 >::KeyType
TKey KeyType
Definition: sitkMemberFunctionFactoryBase.h:129
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 3 >::MemberFunctionType
TMemberFunctionPointer MemberFunctionType
Definition: sitkMemberFunctionFactoryBase.h:257
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 5 >::m_PFunction
FunctionMapType m_PFunction
Definition: sitkMemberFunctionFactoryBase.h:414
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 4 >::MemberFunctionArgument2Type
typename ::detail::FunctionTraits< MemberFunctionType >::Argument2Type MemberFunctionArgument2Type
Definition: sitkMemberFunctionFactoryBase.h:313
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:246
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 1 >::FunctionMapType
std::unordered_map< TKey, FunctionObjectType, hash< TKey > > FunctionMapType
Definition: sitkMemberFunctionFactoryBase.h:195
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 5 >::KeyType
TKey KeyType
Definition: sitkMemberFunctionFactoryBase.h:391
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 1 >::KeyType
TKey KeyType
Definition: sitkMemberFunctionFactoryBase.h:180
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 4 >::MemberFunctionArgument0Type
typename ::detail::FunctionTraits< MemberFunctionType >::Argument0Type MemberFunctionArgument0Type
Definition: sitkMemberFunctionFactoryBase.h:311
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 5 >::ObjectType
typename ::detail::FunctionTraits< MemberFunctionType >::ClassType ObjectType
Definition: sitkMemberFunctionFactoryBase.h:369
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 0 >::BindObject
static FunctionObjectType BindObject(MemberFunctionType pfunc, ObjectType *objectPointer)
Definition: sitkMemberFunctionFactoryBase.h:135
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 5 >::MemberFunctionFactoryBase
MemberFunctionFactoryBase()
Definition: sitkMemberFunctionFactoryBase.h:372
itk::simple::detail::MemberFunctionFactoryBase
A base class for the MemberFunctionFactory.
Definition: sitkMemberFunctionFactoryBase.h:96
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 5 >::MemberFunctionResultType
typename ::detail::FunctionTraits< MemberFunctionType >::ResultType MemberFunctionResultType
Definition: sitkMemberFunctionFactoryBase.h:363
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 4 >::MemberFunctionFactoryBase
MemberFunctionFactoryBase()
Definition: sitkMemberFunctionFactoryBase.h:318
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 3 >::KeyType
TKey KeyType
Definition: sitkMemberFunctionFactoryBase.h:278
itk::simple::detail::MemberFunctionFactoryBase< TMemberFunctionPointer, TKey, 3 >::MemberFunctionArgument1Type
typename ::detail::FunctionTraits< MemberFunctionType >::Argument1Type MemberFunctionArgument1Type
Definition: sitkMemberFunctionFactoryBase.h:260