16 #ifndef __IPSDKBASEPROCESSING_PROCESSINGALGORITHMHDRMACROS_H__ 17 #define __IPSDKBASEPROCESSING_PROCESSINGALGORITHMHDRMACROS_H__ 27 #define IPSDK_DECLARE_PROCESSING_ALGORITHM(libraryName, algoName, \ 28 RuleString, attributeSeq) \ 30 static bool functionRegistration(); \ 31 static bool safeFunctionRegistration(); \ 33 class IPSDK_LIB_API(libraryName) BOOST_PP_CAT(algoName, Lvl3) : \ 34 public ipsdk::processor::BaseProcessingAlgorithm \ 36 IPSDK_DECLARE_PROCESSOR(libraryName, BOOST_PP_CAT(algoName, Lvl3), \ 37 RuleString, attributeSeq) \ 38 friend bool details::functionRegistration(); \ 40 static const FunctionSelector& accessFunctionSelector(); \ 41 static const ipsdk::processor::InstructionSetsIdentifier& accessForcedInstructionSets(); \ 42 static void forceInstructionSets(const ipsdk::processor::InstructionSetsIdentifier& forcedInstructionSetsId); \ 43 static void releaseForcedInstructionSets(); \ 45 const ipsdk::processor::InstructionSetsIdentifier& getForcedInstructionSets() const; \ 46 static ipsdk::processor::InstructionSetsIdentifier& retrieveForcedInstructionSets(); \ 47 const FunctionSelector& getFunctionSelector() const; \ 48 static FunctionSelector& retrieveFunctionSelector(); 53 #define IPSDK_DECLARE_NOTYPE_ALGORITHM_FUNCTION_SELECTOR() \ 55 BOOST_STATIC_CONSTANT(ipsdk::ipUInt32, g_nbTypesForFunSelection = 0); \ 57 void getDataTypeIdColl(DataTypeIdColl& dataTypeIdColl) const \ 59 dataTypeIdColl.init(); \ 65 #define IPSDK_DECLARE_ALGORITHM_FUNCTION_SELECTOR(dataTypeSeq) \ 67 BOOST_STATIC_CONSTANT(ipsdk::ipUInt32, g_nbTypesForFunSelection = \ 68 BOOST_PP_SEQ_SIZE(dataTypeSeq)); \ 70 void getDataTypeIdColl(DataTypeIdColl& dataTypeIdColl) const \ 72 BOOST_PP_SEQ_FOR_EACH_I(IPSDK_INIT_IDENTIFIER_FROM_ATTRIBUTE_MACRO, _, dataTypeSeq); \ 73 dataTypeIdColl.init(BOOST_PP_ENUM(BOOST_PP_SEQ_SIZE(dataTypeSeq), \ 74 IPSDK_ENUM_DATATYPE_IDENTIFIER_MACRO, _)); \ 80 #define IPSDK_DECLARE_ALGORITHM_NOPARSED_DATA() \ 82 void initDataParserColl(DataParserColl& dataParserColl) { \ 83 dataParserColl.clear(); \ 85 void clearDataParserColl() { \ 91 #define IPSDK_DECLARE_ALGORITHM_PARSED_DATA(dataSeq) \ 93 BOOST_PP_SEQ_FOR_EACH(IPSDK_DECLARE_DATA_PARSER_MACRO, _, dataSeq) \ 95 void initDataParserColl(DataParserColl& dataParserColl) { \ 96 dataParserColl.clear(); \ 97 BOOST_PP_SEQ_FOR_EACH(IPSDK_INIT_DATA_PARSER_MACRO, \ 98 dataParserColl, dataSeq) \ 100 void clearDataParserColl() { \ 101 BOOST_PP_SEQ_FOR_EACH(IPSDK_CLEAR_DATA_PARSER_MACRO, \ 109 #define IPSDK_DECLARE_GPU_PROCESSING_ALGORITHM(libraryName, algoName, \ 110 RuleString, attributeSeq) \ 111 namespace details { \ 112 static bool functionRegistration(); \ 114 class IPSDK_LIB_API(libraryName) BOOST_PP_CAT(algoName, GpuLvl3) : \ 115 public ipsdk::processor::BaseGpuProcessingAlgorithm \ 117 IPSDK_DECLARE_PROCESSOR(libraryName, BOOST_PP_CAT(algoName, GpuLvl3), \ 118 RuleString, attributeSeq) \ 119 friend bool details::functionRegistration(); \ 121 static const FunctionSelector& accessFunctionSelector(); \ 123 const FunctionSelector& getFunctionSelector() const; \ 124 static FunctionSelector& retrieveFunctionSelector(); 128 #define IPSDKCUDA_DECLARE_ALGORITHM_FUNCTION_SELECTOR(dataTypeSeq) \ 130 BOOST_STATIC_CONSTANT(ipsdk::ipUInt32, g_nbTypesForFunSelection = \ 131 BOOST_PP_SEQ_SIZE(dataTypeSeq)); \ 133 void getDataTypeIdColl(DataTypeIdColl& dataTypeIdColl) const \ 135 ISPDKCUDA_DECLARE_IDENTIFIERS(dataTypeSeq) \ 136 ISPDKCUDA_INIT_IDENTIFIERS_FROM_ATTRIBUTE(dataTypeSeq) \ 137 dataTypeIdColl.init(BOOST_PP_ENUM(BOOST_PP_SEQ_SIZE(dataTypeSeq), \ 138 IPSDK_ENUM_DATATYPE_IDENTIFIER_MACRO, _)); \ 144 #define IPSDKCUDA_DECLARE_NOTYPE_ALGORITHM_FUNCTION_SELECTOR() \ 146 BOOST_STATIC_CONSTANT(ipsdk::ipUInt32, g_nbTypesForFunSelection = 0); \ 148 void getDataTypeIdColl(DataTypeIdColl& dataTypeIdColl) const \ 150 dataTypeIdColl.init(); \ 155 #endif // __IPSDKBASEPROCESSING_PROCESSINGALGORITHMHDRMACROS_H__ Internal header part of macros set for processing algorithm class declaration.