Medical Imaging Interaction Toolkit  2016.11.0
Medical Imaging Interaction Toolkit
mitkInstantiateAccessFunctions.h
Go to the documentation of this file.
1 /*===================================================================
2 
3 The Medical Imaging Interaction Toolkit (MITK)
4 
5 Copyright (c) German Cancer Research Center,
6 Division of Medical and Biological Informatics.
7 All rights reserved.
8 
9 This software is distributed WITHOUT ANY WARRANTY; without
10 even the implied warranty of MERCHANTABILITY or FITNESS FOR
11 A PARTICULAR PURPOSE.
12 
13 See LICENSE.txt or http://www.mitk.org for details.
14 
15 ===================================================================*/
16 
17 #ifndef MITKINSTANTIATEACCESSFUNCTIONS_H_HEADER_INCLUDED
18 #define MITKINSTANTIATEACCESSFUNCTIONS_H_HEADER_INCLUDED
19 
20 #include <itkCastImageFilter.h>
21 #include <mitkConfig.h>
22 #include <mitkImageToItk.h>
23 
24 #include <mitkPPCat.h>
25 #include <mitkPPExpand.h>
26 #include <mitkPPSeqForEach.h>
28 #include <mitkPPSeqToTuple.h>
29 #include <mitkPPTupleRem.h>
30 
31 #ifndef DOXYGEN_SKIP
32 
33 #define InstantiateAccessFunctionImpl(r, itkImgFunc, type) MITK_PP_CAT(InstantiateAccessFunction_, itkImgFunc) type
34 
35 // product is of the form (itkImgFunc)(short)(2)
36 #ifdef _MSC_VER
37 #define InstantiateAccessFunctionProductImpl(r, product) \
38  MITK_PP_CAT(InstantiateAccessFunction_, MITK_PP_SEQ_HEAD(product)) \
39  MITK_PP_EXPAND(MITK_PP_SEQ_TO_TUPLE(MITK_PP_SEQ_TAIL(product)))
40 #else
41 #define InstantiateAccessFunctionProductImpl(r, product) \
42  MITK_PP_EXPAND(MITK_PP_CAT(InstantiateAccessFunction_, MITK_PP_SEQ_HEAD(product)) \
43  MITK_PP_SEQ_TO_TUPLE(MITK_PP_SEQ_TAIL(product)))
44 #endif
45 
46 #endif // DOXYGEN_SKIP
47 
48 //--------------------------------- instantiation functions ------------------------------
49 
90 #define InstantiateAccessFunctionForFixedType(itkImgFunc, pixelTypeSeq, dimSeq) \
91  MITK_PP_SEQ_FOR_EACH_PRODUCT(InstantiateAccessFunctionProductImpl, ((itkImgFunc))(pixelTypeSeq)(dimSeq))
92 
100 #define InstantiateAccessFunction(itkImgFunc) \
101  InstantiateAccessFunctionForFixedType(itkImgFunc, MITK_ACCESSBYITK_PIXEL_TYPES_SEQ, MITK_ACCESSBYITK_DIMENSIONS_SEQ)
102 
113 #define InstantiateAccessFunctionForFixedDimension(itkImgFunc, dim) \
114  InstantiateAccessFunctionForFixedType(itkImgFunc, MITK_ACCESSBYITK_PIXEL_TYPES_SEQ, (dim))
115 
126 #define InstantiateAccessFunctionForFixedPixelType(itkImgFunc, pixelTypeSeq) \
127  InstantiateAccessFunctionForFixedType(itkImgFunc, pixelTypeSeq, MITK_ACCESSBYITK_DIMENSIONS_SEQ)
128 
138 #define InstantiateAccessFunctionForIntegralPixelTypes(itkImgFunc) \
139  InstantiateAccessFunctionForFixedType( \
140  itkImgFunc, MITK_ACCESSBYITK_INTEGRAL_PIXEL_TYPES_SEQ, MITK_ACCESSBYITK_DIMENSIONS_SEQ)
141 
151 #define InstantiateAccessFunctionForFloatingPixelTypes(itkImgFunc) \
152  InstantiateAccessFunctionForFixedType( \
153  itkImgFunc, MITK_ACCESSBYITK_FLOATING_PIXEL_TYPES_SEQ, MITK_ACCESSBYITK_DIMENSIONS_SEQ)
154 
155 #endif // of MITKINSTANTIATEACCESSFUNCTIONS_H_HEADER_INCLUDED