/*!* \file UGProcessModel.h* \author 北京超图软件股份有限公司* \attention* Copyright © 1997-2009 SuperMap Software Co., Ltd.<br>* All Rights Reserved* \version 1.0* \date 2009年8月12日**/#ifndef UGPROCESSMODEL_H#define UGPROCESSMODEL_H#if _MSC_VER > 1000#pragma once#endif // _MSC_VER > 1000#include "Stream/ugdefs.h"#include "Toolkit/UGThread.h"#include "ProcessModeling/UGProcessModelStyle.h"#include "ProcessModeling/UGParaItem.h"#include "ProcessModeling/UGEventItem.h"namespace UGC{class UGParaItem;class UGEventItem;//using namespace std;//! \brief 模型的进度条回调函数//! \remarkstypedef void (*ProgressExecuting) (void* pParam, UGint nProgressValue);//! \brief 模型的断点保存 回调函数//! \remarkstypedef void (*PausePointSaving) (void* pParam, UGDict<UGString,UGString>& m_strPointSaving);//! \brief 模型含有多线程时线程进度条回调函数//! \remarks//typedef void (*ThreadProgressExecuting) (UGfloat fIncrement);//! \brief 模型的绑定事件 回调函数//! \remarkstypedef void (*EventTriggering) (void* pParam, UGString strKey, UGDict<UGString,UGString>& m_strEventParam, UGDict<UGString,UGVariant*> m_eventParam);//! \brief 该空间处理对应功能执行前事件//! \remarkstypedef void (*ExecutingProc) (UGlong pSpatialProcess,UGbool &isCancel,UGString message);//! \brief 该空间处理对应功能执行完成后事件//! \remarkstypedef void (*ExecutedProc) (UGlong pSpatialProcess,UGString message);class PROCESSMODELING_API UGProcessModel{/** 地理处理器接口类* 所有地理处理模型都必须实现该接口* 属于过滤器/管道架构模式中的过滤器类*/public:UGProcessModel();virtual ~UGProcessModel();//! \brief 得到模型IDvirtual UGint GetID();//! \brief 设置模型ID//! \param nID:模型IDvirtual void SetID(UGint nID);//! \brief 得到模型名字virtual UGString GetName();//! \brief 得到模型标题说明virtual UGString GetCaption();//! \brief 得到模型描述信息virtual UGString GetDescription();//! \brief 设置模型描述信息//! \param nDescription:模型描述信息virtual void SetDescription(UGString& nDescription);//! \brief 得到模型风格virtual UGProcessModelStyle* GetStyle();//! \briefvirtual UGArray<UGParaItem*> GetInputParameters();//! \briefvirtual UGArray<UGParaItem*> GetOutputParameters();//! \briefvirtual UGArray<UGEventItem*> GetEvents();//! \briefvirtual UGbool GetIsReady();virtual UGbool SetInputValue(UGString parameter, UGVariant* value);virtual UGVariant* GetInputValue(UGString parameter);virtual UGVariant* GetOutputValue (UGString parameter);virtual UGProcessModel* Clone() = 0;protected:virtual void SetName(UGString name);virtual void SetCaption(UGString caption);virtual void SetStyle(UGProcessModelStyle* style);virtual void SetInputParameters(UGArray<UGParaItem*> items);virtual void SetOutputParameters(UGArray<UGParaItem*> items);virtual void SetEvents(UGArray<UGEventItem*> items);virtual void SetOutputValue(UGString parameter, UGVariant* value);virtual void BaseClone(UGProcessModel* process);public://! \brief//! \return//virtual UGbool CanExecute() = 0;//! \brief 模型执行接口//! \return 执行正确返回true,否则返回falsevirtual UGbool Execute() = 0;//UGbool ConnectIncoming(UGString id, UGConnector connector);//UGbool ConnectOutgoing(UGString id, UGConnector connector);//! \brief 输入值,常用于处理器属性参数设置//! \param id: 输入值的关键字标识,用于区分多个输入值//! \param UGVariant* value: value: 输入值//! \return 找到关键字id,设置正确返回true,否则返回false//UGbool ImportValue(UGString id, UGVariant* value);//! \brief 输出值//! \param id: 输出值的关键字标识,用于区分多个输出值//! \return 找到则返回id所对应的对象,否则返回NULL//UGVariant* OutportValue(UGString id);//! \brief 中断当前处理//! \return 成功返回true,否则返回falsevirtual UGbool Pause() = 0;//! \brief 恢复执行处理//! \param state: 断点状态//! \return 恢复成功返回true,否则返回falsevirtual UGbool Resume(UGDict<UGString,UGString>& state) = 0;//! \brief 取消执行处理//! \return 成功返回true,否则返回falsevirtual UGbool Cancel() = 0;//! \brief 设置进度条显示回调函数//! \param pProgressExecuting: 函数指针值//! \return voidvoid SetProgressExecuting(ProgressExecuting pProgressExecuting, void* pParam);//! \brief 设置断点保存回调函数//! \param pPausePointSaving: 函数指针值//! \return voidvoid SetPausePointSaving(PausePointSaving pPausePointSaving, void* pParam);//! \brief 设置绑定事件回调函数//! \param pEventTrigger: 函数指针值//! \return voidvoid SetEventTriggering(EventTriggering pEventTrigger, void* pParam);//! \brief 模型含有多线程时供线程进行回调的进度函数//! \remarksvoid ThreadProgressExecuting(UGfloat fIncrement);//! \brief 绑定事件Executing回调函数void SetExecutingFunc(UGlong pSptialProcess,ExecutingProc pExecuting);//! \brief 触发事件Executingvoid SendExecutingFunc(UGbool& isCancel,UGString message);//! \brief 绑定事件Executed回调函数void SetExecutedFunc(UGlong pSpaitalProcess,ExecutedProc pExecuted);//! \brief 触发事件Executedvoid SendExecutedFunc(UGString message);private:UGArray<UGParaItem*> m_arrayParametersInput;UGArray<UGParaItem*> m_arrayParametersOutput;UGArray<UGEventItem*> m_arrayEvents;UGbool m_bIsReady;UGlong m_pSpatialProcess;protected://! \brief 模型IDUGint m_id;//! \brief 模型名字UGString m_name;//! \brief 模型标题说明UGString m_caption;//! \brief 模型描述信息UGString m_description;//! \brief 输入参数映射表UGDict<UGString, UGVariant*> m_imports;//! \brief 输出参数映射表UGDict<UGString, UGVariant*> m_exports;//! \brief 进度条显示回调函数指针//! \remarksProgressExecuting m_pProgressExecuting;//! \brief 进度条显示回调函数的备用参数//! \remarks 用于实现组件对象句柄的传递与复原void* m_pProgressExecutingParam;//! \brief 断点保存回调函数指针//! \remarksPausePointSaving m_pPausePointSaving;//! \brief 断点保存回调函数的备用参数//! \remarks 用于实现组件对象句柄的传递与复原void* m_pPausePointSavingParam;//! \brief 绑定事件回调函数指针//! \remarksEventTriggering m_pEventTriggering;//! \brief 绑定事件回调函数的备用参数//! \remarks 用于实现组件对象句柄的传递与复原void* m_pEventTriggeringParam;//! \brief Executing事件的回调函数指针ExecutingProc m_pExecuting;//! \brief Executed事件的回调函数指针ExecutedProc m_pExecuted;//! \brief 当前进度值//! \remarks 主要用于多线程辅助处理UGfloat m_fCurrentProgress;//! \brief 保证运行状态多线程读写安全UGReadWriteLock m_rwLock;//! \brief 保证函数调用多线程安全UGMutex m_mutex;};}#endif
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
1. 开源生态
2. 协作、人、软件
3. 评估模型