Medical Imaging Interaction Toolkit  2024.12.00
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 (DKFZ)
6 All rights reserved.
7 
8 Use of this source code is governed by a 3-clause BSD license that can be
9 found in the LICENSE file.
10 
11 ============================================================================*/
12 
13 #ifndef mitkInstantiateAccessFunctions_h
14 #define mitkInstantiateAccessFunctions_h
15 
16 #include <itkCastImageFilter.h>
17 #include <mitkConfig.h>
18 #include <mitkImageToItk.h>
19 
20 #include <boost/preprocessor/cat.hpp>
21 #include <boost/preprocessor/expand.hpp>
22 #include <boost/preprocessor/seq/for_each.hpp>
23 #include <boost/preprocessor/seq/for_each_product.hpp>
24 #include <boost/preprocessor/seq/to_tuple.hpp>
25 
26 #ifndef DOXYGEN_SKIP
27 
28 #define InstantiateAccessFunctionImpl(r, itkImgFunc, type) BOOST_PP_CAT(InstantiateAccessFunction_, itkImgFunc) type
29 
30 // product is of the form (itkImgFunc)(short)(2)
31 #ifdef _MSC_VER
32 #define InstantiateAccessFunctionProductImpl(r, product) \
33  BOOST_PP_CAT(InstantiateAccessFunction_, BOOST_PP_SEQ_HEAD(product)) \
34  BOOST_PP_EXPAND(BOOST_PP_SEQ_TO_TUPLE(BOOST_PP_SEQ_TAIL(product)))
35 #else
36 #define InstantiateAccessFunctionProductImpl(r, product) \
37  BOOST_PP_EXPAND(BOOST_PP_CAT(InstantiateAccessFunction_, BOOST_PP_SEQ_HEAD(product)) \
38  BOOST_PP_SEQ_TO_TUPLE(BOOST_PP_SEQ_TAIL(product)))
39 #endif
40 
41 #endif // DOXYGEN_SKIP
42 
43 //--------------------------------- instantiation functions ------------------------------
44 
85 #define InstantiateAccessFunctionForFixedType(itkImgFunc, pixelTypeSeq, dimSeq) \
86  BOOST_PP_SEQ_FOR_EACH_PRODUCT(InstantiateAccessFunctionProductImpl, ((itkImgFunc))(pixelTypeSeq)(dimSeq))
87 
95 #define InstantiateAccessFunction(itkImgFunc) \
96  InstantiateAccessFunctionForFixedType(itkImgFunc, MITK_ACCESSBYITK_PIXEL_TYPES_SEQ, MITK_ACCESSBYITK_DIMENSIONS_SEQ)
97 
108 #define InstantiateAccessFunctionForFixedDimension(itkImgFunc, dim) \
109  InstantiateAccessFunctionForFixedType(itkImgFunc, MITK_ACCESSBYITK_PIXEL_TYPES_SEQ, (dim))
110 
121 #define InstantiateAccessFunctionForFixedPixelType(itkImgFunc, pixelTypeSeq) \
122  InstantiateAccessFunctionForFixedType(itkImgFunc, pixelTypeSeq, MITK_ACCESSBYITK_DIMENSIONS_SEQ)
123 
133 #define InstantiateAccessFunctionForIntegralPixelTypes(itkImgFunc) \
134  InstantiateAccessFunctionForFixedType( \
135  itkImgFunc, MITK_ACCESSBYITK_INTEGRAL_PIXEL_TYPES_SEQ, MITK_ACCESSBYITK_DIMENSIONS_SEQ)
136 
146 #define InstantiateAccessFunctionForFloatingPixelTypes(itkImgFunc) \
147  InstantiateAccessFunctionForFixedType( \
148  itkImgFunc, MITK_ACCESSBYITK_FLOATING_PIXEL_TYPES_SEQ, MITK_ACCESSBYITK_DIMENSIONS_SEQ)
149 
150 #endif
mitkImageToItk.h
mitkConfig.h