/** * @file ModuleInfomation.h * @brief 模块信息类 * * @author 黄军 * @date 2011-7-27 */ #ifndef PAI_FRAME_WORKFLOWENGINE_MODULEINFORMATION_H #define PAI_FRAME_WORKFLOWENGINE_MODULEINFORMATION_H #include #include "Module.h" #include "ModuleParameter.h" // #include "ModuleConnection.h" namespace pai { namespace workflow { using namespace pai::module; /** * @brief 模块信息类 * */ class PAI_WORKFLOWENGINE_EXPORT CModuleInformation { private: CModule* m_oModule; int m_iStepId; /* * 模块 id * 字段不能为空 * */ int m_iId; /* * 模块类的namespace * 字段不能为空 * */ std::string m_strNamespace; /* * 模块的名称,也是模块类的class name * 字段不能为空 * */ std::string m_strName; //模块版本 std::string m_strVersion; //模块qc,默认值等于false bool m_bQC; //模块断点,默认值等于false bool m_bBreakpoint; std::string m_strComments; //模块是否可用,默认值等于true bool m_bEnabled; //模块的参数集合 CModuleParameter* m_ModParam; //模块的 std::vector inModules; std::vector outModules; bool m_bBlankModule;//blank module or not CModuleInformation & operator=(const workflow::CModuleInformation&); public: /** * @biref 目前只能计算浅层的内存统计,主要用于GUI排查内存增长问题 * @return 对象占用内存的大小 */ unsigned long GetMemorySize(); /**@brief 设置 @ref CModule * @param[in] module 模块 */ //REMOVEME void SetModule(CModule* module) { m_oModule = module; } /**@brief 获取@ref CModule 模块 * @return CModule* */ CModule* GetModule() const { return m_oModule; } /** * @brief */ void SetStepID(int iStepID) { m_iStepId = iStepID; } /**@brief 获取模块在工作流中的位置 *@see CModule */ int GetStepID() const { return m_iStepId; } /**@brief 获取模块ID * @return string 模块ID */ std::string GetModuleID() const { return m_oModule->GetMetaData()->GetID(); } std::string GetClassName() const { if (m_oModule) return m_oModule->GetClassName(); else return ""; } /**@brief 获取模块的元数据 * @return CModuleMetaData* 模块元数据对象 * @see CModuleMetaData */ const CModuleMetaData* GetModuleMetaData() const; /** * 设置模块参数 * @param[in] _parammmmeter 模块所对应的参数对象地址 * @see ModuleParameter */ void SetParameters(CModuleParameter* _parameter) { m_oModule->SetParameters(_parameter); } /** * 获取模块参数 * @return ModuleParameter* 模块所对应的参数地址 * @see ModuleParameter */ CModuleParameter* GetModuleParameter() const; // Deprecated methods int GetId() const { return this->GetStepID(); } void SetId(int iId) { SetStepID(iId); } std::string GetNamespace() const { return this->m_strNamespace; } void SetNamespace(const std::string& strNamespace) { this->m_strNamespace = strNamespace; } //REMOVEME void SetName(const std::string& strName) { this->m_strName = strName; } std::string GetName() const; bool GetQC() const { return this->m_bQC; } void SetQC(bool bQC) { this->m_bQC = bQC; } bool GetBreakpoint() const { return this->m_bBreakpoint; } void SetBreakpoint(bool bBreakpoint) { this->m_bBreakpoint = bBreakpoint; } std::string GetComments() const { return this->m_strComments; } std::string GetComments2() const; void SetComments(const std::string& strComments) { this->m_strComments = strComments; } std::string GetVersion() const { return this->m_strVersion; } void SetVersion(const std::string& strVersion) { this->m_strVersion = strVersion; } bool GetEnabled() const { return this->m_bEnabled; } void SetEnabled(bool bEnabled) { this->m_bEnabled = bEnabled; } /** * @brief Get whether it is blank module or not */ bool IsBlankModule() const; /** * @brief Set whether it is blank module or not */ void SetBlankModule(bool bBlankModule); //REMOVEME CModuleParameter* GetModuleParam() { return this->m_ModParam; } void Print(); std::string static ParamItemTypeToString(ParameterType type); CModuleInformation(); CModuleInformation(const workflow::CModuleInformation&); CModuleInformation(const std::string& moduleClass); virtual ~CModuleInformation(); /** * @brief 克隆函数 * @param srcModuleInfo 克隆的对象 */ void Clone(const workflow::CModuleInformation& srcModuleInfo); /** * @brief 比较两个模块信息 * */ friend bool operator ==(CModuleInformation &info, CModuleInformation &info2); }; } } #endif