IPSDK  4_1_0_2
IPSDK : Image Processing Software Development Kit
BaseMacros.h
Go to the documentation of this file.
1 // BaseMacros.h:
3 // -------------
4 //
14 
15 #ifndef __IPSDKUTIL_BASEMACROS_H__
16 #define __IPSDKUTIL_BASEMACROS_H__
17 
18 #include <boost/preprocessor/cat.hpp>
19 #include <boost/preprocessor/stringize.hpp>
20 #include <boost/preprocessor/seq/for_each.hpp>
21 
24 
28 #define IPSDK_LIB_API(libraryName) \
29  BOOST_PP_CAT(IPSDK_LIB_API_, libraryName)()
30 
34 #define IPSDK_LIB_NAMESPACE(libraryName) \
35  BOOST_PP_CAT(IPSDK_LIB_NAMESPACE_, libraryName)()
36 
40 #define IPSDK_LIB_EXCEPTION(libraryName) \
41  IPSDK_LIB_NAMESPACE(libraryName) :: \
42  BOOST_PP_CAT(libraryName, Exception)
43 
47 #define IPSDK_LIB_LOGGER_NAME(libraryName) \
48  IPSDK_LIB_NAMESPACE(libraryName) :: \
49  BOOST_PP_CAT(get, BOOST_PP_CAT(libraryName, LoggerName))()
50 
54 #define IPSDK_LIB_LOGGER(libraryName) \
55  IPSDK_LIB_NAMESPACE(libraryName) :: \
56  BOOST_PP_CAT(get, BOOST_PP_CAT(libraryName, Logger))()
57 
61 #define IPSDK_LIB_LOG_MSG_MANAGER(libraryName) \
62  IPSDK_LIB_NAMESPACE(libraryName) :: \
63  BOOST_PP_CAT(get, BOOST_PP_CAT(libraryName, LogMessageManager))()
64 
67 
70 #define IPSDK_START_NAMESPACE_MACRO(r, data, namespaceName) namespace namespaceName {
71 
74 #define IPSDK_START_NAMESPACE(namespaceSeq) \
75  BOOST_PP_SEQ_FOR_EACH_R(200, IPSDK_START_NAMESPACE_MACRO, _, namespaceSeq)
76 
79 #define IPSDK_END_NAMESPACE_MACRO(r, data, namespaceName) }
80 
83 #define IPSDK_END_NAMESPACE(namespaceSeq) \
84  BOOST_PP_SEQ_FOR_EACH_R(200, IPSDK_END_NAMESPACE_MACRO, _, namespaceSeq)
85 
88 #define IPSDK_NAMESPACE_NAME_MACRO(r, data, namespaceName) namespaceName::
89 
92 #define IPSDK_NAMESPACE_NAME(namespaceSeq) \
93  BOOST_PP_SEQ_FOR_EACH_R(200, IPSDK_NAMESPACE_NAME_MACRO, _, namespaceSeq)
94 
97 
101 #define IPSDK_FULL_NAMESPACE_STR_MACRO(r, _, namespaceName) \
102  BOOST_PP_STRINGIZE(namespaceName) "::"
103 
106 #define IPSDK_FULL_NAMESPACE_STR(namespaceSeq) \
107  BOOST_PP_SEQ_FOR_EACH_R(200, IPSDK_FULL_NAMESPACE_STR_MACRO, _, namespaceSeq)
108 
112 #define IPSDK_FULL_CLASSNAME_STR(namespaceSeq, className) \
113  IPSDK_FULL_NAMESPACE_STR(namespaceSeq) \
114  BOOST_PP_STRINGIZE(className)
115 
118 
119 #endif // __IPSDKUTIL_BASEMACROS_H__