#ifndef LPALGORITHM_H #define LPALGORITHM_H #include "lpbengine.h" class IAlgo { public: IAlgo(){} virtual ~IAlgo(){} virtual bool RegisterFunc(IAlgorithmLib* pAlgoLib) { return true; }; virtual bool Exec(IDetectorTask *lpTask, IDetectorAlgorithm* lpAlgorithm) = 0; virtual bool Init(IDetectorTask *lpTask, IDetectorAlgorithm* lpAlgorithm) = 0; virtual void SaveUserParamValue(IDetectorTask *lpTask, IDetectorAlgorithm* lpAlgorithm, int nParamID) {}; virtual void LoadUserParamValue(IDetectorTask *lpTask, IDetectorAlgorithm* lpAlgorithm, int nParamID, QVariant& value) {}; }; #define REGISTER_FUNCTION_IMPLEMENT(NAME, FUNC, PARAMTYPELIST) \ if (NULL != pAlgoLib) { \ if (!pAlgoLib->RegisterFunc(#NAME, FUNC, PARAMTYPELIST)) \ return false; \ } #ifdef ALGO_LIB # define ALGO_EXPORT extern "C" __declspec(dllexport) #else # define ALGO_EXPORT extern "C" __declspec(dllimport) #endif typedef void(*FnLpAlgoNewInstance)(IAlgo** lppAlgo); ALGO_EXPORT void LpAlgoNewInstance(IAlgo** lppAlgo); ALGO_EXPORT bool LpAlgoDeleteInstance(); #endif // LPALGORITHM_H