1 #ifndef _PROCESS_MANAGER_HEADER_
2 #define _PROCESS_MANAGER_HEADER_
6 #pragma warning(disable:4996 4251 4275 4800 4190)
8 #include <boost/function.hpp>
9 #include <boost/functional/factory.hpp>
10 #include <boost/thread/recursive_mutex.hpp>
11 #include <boost/thread/lock_guard.hpp>
17 #include "blocks/ParamValue.h"
22 struct ParamDefinition;
26 input, imgProcess, videoProcess, mathOperator, output
29 typedef boost::function< Block*() > Algo_factory;
31 #define _PROCESS_MANAGER ProcessManager::getInstance()
35 std::vector<ParamDefinition> emptyVector;
36 std::map< AlgoType, std::vector<std::string> > listOfAlgorithms_;
37 std::map< std::string, std::vector<ParamDefinition> > algorithmInParams_;
38 std::map< std::string, std::vector<ParamDefinition> > algorithmSubParams_;
39 std::map< std::string, std::vector<ParamDefinition> > algorithmOutParams_;
40 std::map< std::string, Algo_factory > algo_factory_;
45 static boost::recursive_mutex _listBlockMutex;
48 static void releaseInstance();
50 std::vector<std::string> getAlgos(AlgoType type)
const;
51 const std::vector<ParamDefinition>& getAlgo_InParams(std::string name)
const;
52 const std::vector<ParamDefinition>& getAlgo_SubParams(std::string name)
const;
53 const std::vector<ParamDefinition>& getAlgo_OutParams(std::string name)
const;
56 bool addNewAlgo(AlgoType type, std::string name)
58 boost::lock_guard<boost::recursive_mutex> guard(_listBlockMutex);
59 algo_factory_[name] = boost::factory<T*>();
60 listOfAlgorithms_[type].push_back(name);
61 algorithmInParams_[name] = T::getListParams();
62 algorithmOutParams_[name] = T::getListOutputs();
63 algorithmSubParams_[name] = T::getListSubParams();
67 AlgoType getAlgoType(std::string algo_name)
const;
68 Block* createAlgoInstance(std::string algo_name)
const;
69 ParamType getParamType(std::string algo_name, std::string paramName,
bool input)
const;
70 std::string getParamHelp(std::string algo_name, std::string paramName,
bool input)
const;
Definition: ProcessManager.h:33