IPSDK  4_1_0_2
IPSDK : Image Processing Software Development Kit
TemplateClassId.h
Go to the documentation of this file.
1 // TemplateClassId.h:
3 // ------------------
4 //
11 //
13 
14 #ifndef __IPSDKUTIL_TEMPLATECLASSID_H__
15 #define __IPSDKUTIL_TEMPLATECLASSID_H__
16 
17 #include <boost/preprocessor/seq/for_each_i.hpp>
18 #include <boost/preprocessor/seq/size.hpp>
19 #include <boost/preprocessor/stringize.hpp>
20 #include <boost/preprocessor/control/if.hpp>
21 #include <boost/preprocessor/arithmetic/sub.hpp>
22 
25 
28 #define IPSDK_TEMPLATE_CLASSID_MACRO_TRUE(T) \
29  BOOST_PP_STRINGIZE(T) ","
30 
33 #define IPSDK_TEMPLATE_CLASSID_MACRO_FALSE(T) \
34  BOOST_PP_STRINGIZE(T)
35 
38 #define IPSDK_TEMPLATE_CLASSID_MACRO(r, SeqLastIdx, i, T) \
39  BOOST_PP_IF(BOOST_PP_SUB(SeqLastIdx, i), \
40  IPSDK_TEMPLATE_CLASSID_MACRO_TRUE \
41  IPSDK_TEMPLATE_CLASSID_MACRO_FALSE)(T)
42 
45 #define IPSDK_TEMPLATE_CLASSID(className, seqT) \
46  BOOST_PP_STRINGIZE(className) \
47  "<" \
48  BOOST_PP_SEQ_FOR_EACH_I_R(200, \
49  IPSDK_TEMPLATE_CLASSID_MACRO, \
50  BOOST_PP_SUB(BOOST_PP_SEQ_SIZE(seqT), 1), \
51  seqT) \
52  ">"
53 
56 
57 #endif // __IPSDKUTIL_TEMPLATECLASSID_H__