Medical Imaging Interaction Toolkit  2016.11.0
Medical Imaging Interaction Toolkit
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
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