15 #ifndef __IPSDKBASEPROCESSING_ATTRIBUTECOLLINFOCHECKMACROS_H__ 16 #define __IPSDKBASEPROCESSING_ATTRIBUTECOLLINFOCHECKMACROS_H__ 18 #include <IPSDKBaseProcessing/Attribute/Macros/AttributeCollInfo.h> 30 #define IPSDK_ATTRIBUTE_COLL_CREATE_MACRO(z, n, startIdx) \ 31 BOOST_PP_CAT(typename AttributeCollInfoType::AttributeType, BOOST_PP_ADD(n, startIdx)) 35 #define IPSDK_ATTRIBUTE_COLL_CREATE(StartIdx) \ 36 AttributeCollInfo<BOOST_PP_ENUM(BOOST_PP_SUB(IPSDK_ATTRIBUTE_COLL_SIZE, StartIdx), \ 37 IPSDK_ATTRIBUTE_COLL_CREATE_MACRO, StartIdx)> 42 #define IPSDK_ATTRIBUTE_COLL_UNIQUE(z, n, startIdx) \ 43 BOOST_PP_IF(n, &&, ) \ 44 (!IsNotNullAttribute<BOOST_PP_CAT(typename AttributeCollInfoType::AttributeType, n)>::g_bValue || \ 45 !ExistsAttribute<BOOST_PP_CAT(typename AttributeCollInfoType::AttributeType, n), \ 46 IPSDK_ATTRIBUTE_COLL_CREATE(BOOST_PP_INC(n)) >::g_bValue) 51 #define IPSDK_ATTRIBUTE_COLL_LOGICAL_MACRO(z, n, data) \ 52 BOOST_PP_IF(n, BOOST_PP_SEQ_ELEM(3, data), ) \ 53 ( BOOST_PP_SEQ_ELEM(0, data)< \ 54 typename BOOST_PP_SEQ_ELEM(1, data)::BOOST_PP_CAT(AttributeType, n), \ 55 BOOST_PP_SEQ_ELEM(2, data)>::g_bValue ? 1 : 0 ) 61 #define IPSDK_ATTRIBUTE_COLL_LOGICAL(PredicateClass, SourceClass, CheckedClass, operation) \ 62 (BOOST_PP_REPEAT(IPSDK_ATTRIBUTE_COLL_SIZE, \ 63 IPSDK_ATTRIBUTE_COLL_LOGICAL_MACRO, \ 64 (PredicateClass)(SourceClass)(CheckedClass)(operation))) 69 #define IPSDK_ATTRIBUTE_COLL_AND(PredicateClass, SourceClass) \ 70 IPSDK_ATTRIBUTE_COLL_OPERATION(PredicateClass, SourceClass, true, false, &&) 75 #define IPSDK_ATTRIBUTE_COLL_OR(PredicateClass, SourceClass) \ 76 IPSDK_ATTRIBUTE_COLL_OPERATION(PredicateClass, SourceClass, true, false, ||) 77 #define IPSDK_ATTRIBUTE_COLL_CREATE_MACRO(z, n, startIdx) \ 79 BOOST_PP_CAT(typename AttributeCollInfoType::AttributeType, BOOST_PP_ADD(n, startIdx)) 83 #define IPSDK_ATTRIBUTE_COLL_CREATE(StartIdx) \ 84 AttributeCollInfo<BOOST_PP_ENUM(BOOST_PP_SUB(IPSDK_ATTRIBUTE_COLL_SIZE, StartIdx), \ 85 IPSDK_ATTRIBUTE_COLL_CREATE_MACRO, StartIdx)> 90 #define IPSDK_ATTRIBUTE_COLL_UNIQUE(z, n, startIdx) \ 91 BOOST_PP_IF(n, &&, ) \ 92 (!IsNotNullAttribute<BOOST_PP_CAT(typename AttributeCollInfoType::AttributeType, n)>::g_bValue || \ 93 !ExistsAttribute<BOOST_PP_CAT(typename AttributeCollInfoType::AttributeType, n), \ 94 IPSDK_ATTRIBUTE_COLL_CREATE(BOOST_PP_INC(n)) >::g_bValue) 99 #define IPSDK_ATTRIBUTE_COLL_LOGICAL_MACRO(z, n, data) \ 100 BOOST_PP_IF(n, BOOST_PP_SEQ_ELEM(3, data), ) \ 101 ( BOOST_PP_SEQ_ELEM(0, data)< \ 102 typename BOOST_PP_SEQ_ELEM(1, data)::BOOST_PP_CAT(AttributeType, n), \ 103 BOOST_PP_SEQ_ELEM(2, data)>::g_bValue ? 1 : 0 ) 109 #define IPSDK_ATTRIBUTE_COLL_LOGICAL(PredicateClass, SourceClass, CheckedClass, operation) \ 110 (BOOST_PP_REPEAT(IPSDK_ATTRIBUTE_COLL_SIZE, \ 111 IPSDK_ATTRIBUTE_COLL_LOGICAL_MACRO, \ 112 (PredicateClass)(SourceClass)(CheckedClass)(operation))) 117 #define IPSDK_ATTRIBUTE_COLL_AND(PredicateClass, SourceClass) \ 118 IPSDK_ATTRIBUTE_COLL_OPERATION(PredicateClass, SourceClass, true, false, &&) 123 #define IPSDK_ATTRIBUTE_COLL_OR(PredicateClass, SourceClass) \ 124 IPSDK_ATTRIBUTE_COLL_OPERATION(PredicateClass, SourceClass, true, false, ||) 130 template <
typename AttributeType,
typename AttributeCollInfoType>
139 template <
typename AttributeCollInfoType>
152 #endif // __IPSDKBASEPROCESSING_ATTRIBUTECOLLINFOCHECKMACROS_H__ Main namespace for IPSDK library.
Definition: AlgorithmFunctionEfficiency.h:22
structure allowing to check whether two attributes have same type
Definition: AttributeCheckMacros.h:154
Configuration parameters for processing attribute macros.
structure allowing to check whether a given attribute exists in attribute collection information ...
Definition: AttributeCollInfoCheckMacros.h:131
BOOST_STATIC_CONSTANT(bool, g_bValue=BOOST_PP_REPEAT(BOOST_PP_DEC(IPSDK_ATTRIBUTE_COLL_SIZE), IPSDK_ATTRIBUTE_COLL_UNIQUE,))
structure associated value
#define IPSDK_ATTRIBUTE_COLL_SIZE
number of supported attributes for processor class
Definition: AttributeConfigMacros.h:25
#define IPSDK_ATTRIBUTE_COLL_UNIQUE(z, n, startIdx)
[Internal] macro allowing to check that an element is unique in remains of attribute info collection ...
Definition: AttributeCollInfoCheckMacros.h:90
Macros set allowing to check properties an attributes.
Structure used to check whether a given attribute collection information has unique typed attributes...
Definition: AttributeCollInfoCheckMacros.h:140
BOOST_STATIC_CONSTANT(bool, g_bValue=IPSDK_ATTRIBUTE_COLL_LOGICAL(IsSameAttribute, AttributeCollInfoType, AttributeType,||))
structure associated value
#define IPSDK_ATTRIBUTE_COLL_LOGICAL(PredicateClass, SourceClass, CheckedClass, operation)
[Internal] macro allowing to check whether elements respect a given condition in an attribute info co...
Definition: AttributeCollInfoCheckMacros.h:109