XNSim/XNCore/XNFramework.h
2025-04-28 12:25:20 +08:00

207 lines
3.5 KiB
C++
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* @file XNFramework.h
* @author jinchao
* @brief 框架类
* @version 1.0
* @date 2025-01-08
*
* @copyright Copyright (c) 2025 COMAC
*
*/
#pragma once
#include "XNObject.h"
class XNFrameworkPrivate;
/**
* @brief 框架类
*/
class XNCORE_EXPORT XNFramework : public XNObject
{
/**
* @brief 宏定义用于支持Qt的元对象系统
*/
Q_OBJECT
/**
* @brief 宏定义,用于禁用拷贝构造函数
*/
Q_DISABLE_COPY(XNFramework)
/**
* @brief 宏定义,用于声明私有数据成员
*/
Q_DECLARE_PRIVATE(XNFramework);
/**
* @brief 宏定义用于声明属性workPath
*/
Q_PROPERTY(QString workPath READ GetWorkPath WRITE SetWorkPath)
/**
* @brief 宏定义用于声明属性modelPath
*/
Q_PROPERTY(QString modelPath READ GetModelPath WRITE SetModelPath)
/**
* @brief 宏定义用于声明属性cpuAffinity
*/
Q_PROPERTY(quint32 cpuAffinity READ GetCpuAffinity WRITE SetCpuAffinity)
public:
/**
* @brief 构造函数
* @param parent 父对象
*/
explicit XNFramework(QObject *parent = nullptr);
/**
* @brief 析构函数
*/
virtual ~XNFramework();
/**
* @brief 获取工作路径
* @return 工作路径
*/
QString GetWorkPath();
/**
* @brief 获取模型库路径
* @return 模型库路径
*/
QString GetModelPath();
/**
* @brief 获取服务库路径
* @return 服务库路径
*/
QString GetServicePath();
/**
* @brief 获取CPU亲和性
* @return CPU亲和性
*/
quint32 GetCpuAffinity();
/**
* @brief 设置场景XML
* @param scenarioXml 场景XML
*/
void SetScenarioXml(const QString &scenarioXml);
signals:
/**
* @brief 初始化
*/
void Initialize();
/**
* @brief 初始化成功
*/
void InitializeSuccess(bool isSuccess);
/**
* @brief 准备执行
*/
void PrepareForExecute();
/**
* @brief 准备执行成功
*/
void PrepareForExecuteSuccess(bool isSuccess);
/**
* @brief 分析场景XML
* @param scenarioXml 场景XML
*/
void AnalyzeScenarioXml(const QString &scenarioXml);
/**
* @brief 仿真控制
* @param objectId 对象ID
* @param cmd 命令
*/
void SimControl(quint32 objectId, SimControlCmd cmd);
public slots:
/**
* @brief 设置工作路径
* @param workPath 工作路径
*/
void SetWorkPath(const QString &workPath);
/**
* @brief 设置模型库路径
* @param modelPath 模型库路径
*/
void SetModelPath(const QString &modelPath);
/**
* @brief 设置服务库路径
* @param servicePath 服务库路径
*/
void SetServicePath(const QString &servicePath);
/**
* @brief 设置CPU亲和性
* @param cpuAffinity CPU亲和性
*/
void SetCpuAffinity(quint32 cpuAffinity);
/**
* @brief 初始化
*/
void OnInitialize();
/**
* @brief 初始化成功
*/
void OnInitializeSuccess();
/**
* @brief 初始化失败
*/
void OnInitializeFailed();
/**
* @brief 解析配置文件成功
*/
void OnAnalyzeScenarioXmlSuccess();
/**
* @brief 解析配置文件失败
*/
void OnAnalyzeScenarioXmlFailed();
/**
* @brief 准备执行
*/
void OnPrepareForExecute();
/**
* @brief 准备执行成功
*/
void OnPrepareForExecuteSuccess();
/**
* @brief 准备执行失败
*/
void OnPrepareForExecuteFailed();
/**
* @brief 仿真控制
* @param cmd 命令
*/
void OnSimControl(quint32 objectId, SimControlCmd cmd);
protected:
/**
* @brief 构造函数
* @param dd 私有数据成员
* @param parent 父对象
*/
XNFramework(XNFrameworkPrivate &dd, QObject *parent = nullptr);
};