2025-06-25 14:34:26 +00:00
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
#include "componentbasic.h"
|
|
|
|
|
#include <messagebasic.h>
|
2025-06-28 17:38:37 +00:00
|
|
|
|
#include <QJsonObject>
|
|
|
|
|
#include <QJSEngine>
|
|
|
|
|
|
|
|
|
|
class MessageLoader;
|
2025-06-30 05:49:36 +00:00
|
|
|
|
class CompareDelegate;
|
|
|
|
|
class ConvertDelegate;
|
|
|
|
|
class ExecuteDelegate;
|
2025-06-28 17:38:37 +00:00
|
|
|
|
class LogicalNode;
|
2025-06-25 14:34:26 +00:00
|
|
|
|
|
2025-06-29 12:30:32 +00:00
|
|
|
|
/// <summary>
|
|
|
|
|
/// ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
/// </summary>
|
|
|
|
|
struct COMPONENTBASIC_EXPORT GeneralData : public TopicData {
|
|
|
|
|
QJsonObject _element_bind;
|
|
|
|
|
|
|
|
|
|
QString topicString() const override;
|
|
|
|
|
std::shared_ptr<Serializable> newDefault() const override;
|
|
|
|
|
|
|
|
|
|
void recoveryFrom(const QJsonObject& obj) override;
|
|
|
|
|
void saveTo(QJsonObject& obj) const override;
|
|
|
|
|
};
|
|
|
|
|
// ==================================================================================
|
|
|
|
|
|
2025-06-25 14:34:26 +00:00
|
|
|
|
/// <summary>
|
|
|
|
|
/// <20><>Ϊ<EFBFBD><CEAA>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>
|
|
|
|
|
/// </summary>
|
2025-06-28 17:38:37 +00:00
|
|
|
|
class COMPONENTBASIC_EXPORT MapKernal : virtual public Serializable {
|
2025-06-25 14:34:26 +00:00
|
|
|
|
private:
|
|
|
|
|
/// <summary>
|
2025-06-28 17:38:37 +00:00
|
|
|
|
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
/// </summary>
|
|
|
|
|
std::shared_ptr<MessageLoader> _bind_loader;
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// {Topic<69><63>default-value}
|
2025-06-25 14:34:26 +00:00
|
|
|
|
/// </summary>
|
|
|
|
|
QHash<QString, std::shared_ptr<TopicData>> _variable_types;
|
2025-06-28 17:38:37 +00:00
|
|
|
|
|
2025-06-25 14:34:26 +00:00
|
|
|
|
/// <summary>
|
2025-06-28 17:38:37 +00:00
|
|
|
|
/// <20>Ƚ<EFBFBD><C8BD><EFBFBD>
|
2025-06-25 14:34:26 +00:00
|
|
|
|
/// </summary>
|
2025-06-30 05:49:36 +00:00
|
|
|
|
QHash<QString, std::shared_ptr<CompareDelegate>> _compare_types;
|
2025-06-28 17:38:37 +00:00
|
|
|
|
/// <summary>
|
|
|
|
|
/// ת<><D7AA><EFBFBD><EFBFBD>
|
|
|
|
|
/// </summary>
|
2025-06-30 05:49:36 +00:00
|
|
|
|
QHash<QString, std::shared_ptr<ConvertDelegate>> _convert_types;
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// ִ<><D6B4><EFBFBD><EFBFBD>
|
|
|
|
|
/// </summary>
|
|
|
|
|
QHash<QString, std::shared_ptr<ExecuteDelegate>> _execute_types;
|
2025-06-28 17:38:37 +00:00
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// <20><><EFBFBD>п<EFBFBD><D0BF>õĽڵ<C4BD><DAB5><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
/// </summary>
|
|
|
|
|
QHash<QString, std::shared_ptr<LogicalNode>> _logicalnode_types;
|
2025-06-25 14:34:26 +00:00
|
|
|
|
|
|
|
|
|
public:
|
2025-06-28 17:38:37 +00:00
|
|
|
|
MapKernal(std::shared_ptr<MessageLoader> ins);
|
|
|
|
|
virtual ~MapKernal() = default;
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// <20><>ȡMessageLoader<65><72><EFBFBD><EFBFBD>
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
std::shared_ptr<MessageLoader> messageLoader() const;
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><CDB9><EFBFBD> ======================================================
|
2025-06-25 14:34:26 +00:00
|
|
|
|
/// <summary>
|
|
|
|
|
/// ע<><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="init"></param>
|
2025-06-28 17:38:37 +00:00
|
|
|
|
virtual void registData(std::shared_ptr<TopicData> init);
|
2025-06-25 14:34:26 +00:00
|
|
|
|
/// <summary>
|
2025-06-28 17:38:37 +00:00
|
|
|
|
/// <20><>ȡ<EFBFBD><C8A1><EFBFBD>п<EFBFBD><D0BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2025-06-25 14:34:26 +00:00
|
|
|
|
/// </summary>
|
2025-06-28 17:38:37 +00:00
|
|
|
|
/// <returns></returns>
|
|
|
|
|
virtual QList<QString> dataTypes() const;
|
2025-06-25 14:34:26 +00:00
|
|
|
|
/// <summary>
|
2025-06-28 17:38:37 +00:00
|
|
|
|
/// <20><>ȡָ<C8A1><D6B8>topic<69><63><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2025-06-25 14:34:26 +00:00
|
|
|
|
/// </summary>
|
2025-06-28 17:38:37 +00:00
|
|
|
|
/// <param name="topic"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
virtual std::shared_ptr<TopicData> getData(const QString &topic);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// <20>Ƚ<EFBFBD><C8BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><CDB9><EFBFBD> ======================================================
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// ע<><D7A2><EFBFBD>Ƚ<EFBFBD><C8BD><EFBFBD>
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="ins"></param>
|
2025-06-30 05:49:36 +00:00
|
|
|
|
virtual void registCompare(std::shared_ptr<CompareDelegate> ins);
|
2025-06-28 17:38:37 +00:00
|
|
|
|
/// <summary>
|
|
|
|
|
/// <20><>ȡ<EFBFBD>Ƚ<EFBFBD><C8BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
virtual QList<QString> compareTypes() const;
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// <20><>ȡ<EFBFBD>Ƚ<EFBFBD><C8BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="name"></param>
|
|
|
|
|
/// <returns></returns>
|
2025-06-30 05:49:36 +00:00
|
|
|
|
virtual std::shared_ptr<CompareDelegate> getCompare(const QString& name);
|
2025-06-28 17:38:37 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// ת<><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><CDB9><EFBFBD> ======================================================
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// ע<><D7A2>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="ins"></param>
|
2025-06-30 05:49:36 +00:00
|
|
|
|
virtual void registConvert(std::shared_ptr<ConvertDelegate> ins);
|
2025-06-28 17:38:37 +00:00
|
|
|
|
/// <summary>
|
|
|
|
|
/// ת<><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
virtual QList<QString> convertTypes() const;
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// <20><>ȡָ<C8A1><D6B8><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="name"></param>
|
|
|
|
|
/// <returns></returns>
|
2025-06-30 05:49:36 +00:00
|
|
|
|
virtual std::shared_ptr<ConvertDelegate> getConvert(const QString& name);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// ִ<>нڵ<D0BD><DAB5><EFBFBD><EFBFBD><EFBFBD><CDB9><EFBFBD> ====================================================
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// ע<><D7A2><EFBFBD><EFBFBD>չִ<D5B9><D6B4><EFBFBD><EFBFBD>
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="ins"></param>
|
|
|
|
|
virtual void registExecute(std::shared_ptr<ExecuteDelegate> ins);
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// ִ<><D6B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
virtual QList<QString> executeTypes() const;
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// <20><>ȡָ<C8A1><D6B8><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD>ִ<EFBFBD><D6B4><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="name"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
virtual std::shared_ptr<ExecuteDelegate> getExecute(const QString& name);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// <20><EFBFBD><DFBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><CDB9><EFBFBD> ====================================================
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// ע<><D7A2><EFBFBD><EFBFBD><DFBC>ڵ<EFBFBD>
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="ins"></param>
|
|
|
|
|
virtual void registNode(std::shared_ptr<LogicalNode> ins);
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// ִ<><D6B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
virtual QList<QString> nodeTypes() const;
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// <20><>ȡָ<C8A1><D6B8><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD>ִ<EFBFBD><D6B4><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="name"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
virtual std::shared_ptr<LogicalNode> getNode(const QString& name);
|
|
|
|
|
|
2025-06-28 17:38:37 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// ͨ<><CDA8> Serializable <20>̳<EFBFBD>
|
|
|
|
|
std::shared_ptr<Serializable> newDefault() const override;
|
|
|
|
|
void recoveryFrom(const QJsonObject& obj) override{}
|
|
|
|
|
void saveTo(QJsonObject& obj) const override{}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// <20>ȽϹ<C8BD>ϵʵ<CFB5><CAB5>
|
|
|
|
|
/// </summary>
|
2025-06-30 05:49:36 +00:00
|
|
|
|
class COMPONENTBASIC_EXPORT CompareDelegate {
|
2025-06-28 17:38:37 +00:00
|
|
|
|
private:
|
|
|
|
|
QJSEngine& _script_engine;
|
|
|
|
|
QString _function_name;
|
|
|
|
|
|
|
|
|
|
public:
|
2025-06-30 05:49:36 +00:00
|
|
|
|
CompareDelegate(QJSEngine& bind_engine, const QString& func);
|
2025-06-28 17:38:37 +00:00
|
|
|
|
|
|
|
|
|
QString name() const;
|
|
|
|
|
bool compare(std::shared_ptr<TopicData> vleft, std::shared_ptr<TopicData> vright);
|
|
|
|
|
};
|
2025-06-29 12:30:32 +00:00
|
|
|
|
|
2025-06-28 17:38:37 +00:00
|
|
|
|
/// <summary>
|
|
|
|
|
/// <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>ʵ<EFBFBD><CAB5>
|
|
|
|
|
/// </summary>
|
2025-06-30 05:49:36 +00:00
|
|
|
|
class COMPONENTBASIC_EXPORT ConvertDelegate {
|
2025-06-28 17:38:37 +00:00
|
|
|
|
public:
|
|
|
|
|
typedef QString DATA_TOPIC_STRING;
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="host"><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><CDB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></param>
|
|
|
|
|
/// <param name="bind_engine"></param>
|
|
|
|
|
/// <param name="func"></param>
|
2025-06-30 05:49:36 +00:00
|
|
|
|
ConvertDelegate(std::shared_ptr<MapKernal> host, QJSEngine& bind_engine, const QString& func);
|
2025-06-28 17:38:37 +00:00
|
|
|
|
/// <summary>
|
|
|
|
|
/// ת<><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD>JS<4A><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
QString name() const;
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͱ<CDB0>
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <returns>list{pair{<7B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>}}</returns>
|
|
|
|
|
QList<std::pair<DATA_TOPIC_STRING, QString>> inputTable() const;
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͱ<EFBFBD>
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="table">list{pair{<7B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>}}</param>
|
|
|
|
|
void inputReset(const QList<std::pair<DATA_TOPIC_STRING, QString>> &table);
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <returns>pair{<7B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>}</returns>
|
|
|
|
|
std::pair<DATA_TOPIC_STRING, QString> outputVariable() const;
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="appoint"></param>
|
|
|
|
|
void outputReset(std::pair<DATA_TOPIC_STRING, QString> appoint);
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// ִ<><D6B4>ת<EFBFBD><D7AA>
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="input_variables"><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
std::shared_ptr<TopicData> convert(const QList<std::shared_ptr<TopicData>>& input_variables);
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
std::shared_ptr<MapKernal> _host_bind;
|
|
|
|
|
|
|
|
|
|
QJSEngine& _script_engine;
|
|
|
|
|
QString _function_name;
|
|
|
|
|
|
|
|
|
|
QList<std::pair<DATA_TOPIC_STRING, QString>> _input_table;
|
|
|
|
|
std::pair<DATA_TOPIC_STRING, QString> _output_appoint;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// ִ<>н<EFBFBD><D0BD><EFBFBD>
|
|
|
|
|
/// </summary>
|
|
|
|
|
enum class LogicalResult {
|
|
|
|
|
UNDEFINED, // δ<><CEB4><EFBFBD><EFBFBD>
|
|
|
|
|
SUCCESS, // <20>ɹ<EFBFBD>
|
|
|
|
|
FAILURE // ʧ<><CAA7>
|
|
|
|
|
};
|
2025-06-30 05:49:36 +00:00
|
|
|
|
/// <summary>
|
|
|
|
|
/// ִ<>д<EFBFBD><D0B4><EFBFBD>
|
|
|
|
|
/// </summary>
|
|
|
|
|
class COMPONENTBASIC_EXPORT ExecuteDelegate : public Serializable {
|
|
|
|
|
public:
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// <20><>ȡ<EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
virtual QString typeName() const = 0;
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD>ʶ<EFBFBD><CAB6><EFBFBD><EFBFBD><EFBFBD>ݽӿ<DDBD>
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <returns>map{name, type-ins}</returns>
|
|
|
|
|
virtual QHash<QString, std::shared_ptr<TopicData>> inputList() const = 0;
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD>ʶ<EFBFBD><CAB6><EFBFBD><EFBFBD><EFBFBD>ݽӿ<DDBD>
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <returns>map{name, type-ins}</returns>
|
|
|
|
|
virtual QHash<QString, std::shared_ptr<TopicData>> outputList() const = 0;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// <20><><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD>״̬
|
|
|
|
|
/// </summary>
|
|
|
|
|
virtual void reset() = 0;
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// ִ<><D6B4><EFBFBD><EFBFBD><DFBC>ڵ<EFBFBD>
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="core"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
virtual LogicalResult execute() = 0;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
2025-06-28 17:38:37 +00:00
|
|
|
|
/// <summary>
|
|
|
|
|
/// <20><EFBFBD><DFBC>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
/// </summary>
|
|
|
|
|
enum class NodeKind {
|
|
|
|
|
MAPNODE, // <20><EFBFBD><DFBC><EFBFBD><EFBFBD>ڵ<EFBFBD>
|
|
|
|
|
SEQUENCENODE, // ˳<><CBB3><EFBFBD>ڵ<EFBFBD>
|
|
|
|
|
SELECTORNODE, // ѡ<><D1A1><EFBFBD>ڵ<EFBFBD>
|
|
|
|
|
PARALLELNODE, // <20><><EFBFBD>нڵ<D0BD>
|
|
|
|
|
COMPARENODE, // <20>ȽϽڵ<CFBD>
|
|
|
|
|
ACTIONNODE, // <20><><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>
|
|
|
|
|
};
|
2025-06-25 14:34:26 +00:00
|
|
|
|
/// <summary>
|
|
|
|
|
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><DFBC>ڵ<EFBFBD><DAB5>Ļ<EFBFBD><C4BB><EFBFBD>
|
|
|
|
|
/// </summary>
|
2025-06-29 14:58:45 +00:00
|
|
|
|
class COMPONENTBASIC_EXPORT LogicalNode : virtual public Serializable, public std::enable_shared_from_this<LogicalNode> {
|
2025-06-28 17:38:37 +00:00
|
|
|
|
private:
|
|
|
|
|
int _node_id = 0;
|
|
|
|
|
NodeKind _node_type = NodeKind::ACTIONNODE;
|
2025-06-29 14:58:45 +00:00
|
|
|
|
|
2025-06-28 17:38:37 +00:00
|
|
|
|
std::weak_ptr<LogicalNode> _parent_bind;
|
|
|
|
|
QList<std::shared_ptr<LogicalNode>> _child_list;
|
|
|
|
|
|
2025-06-29 14:58:45 +00:00
|
|
|
|
/// <summary>
|
|
|
|
|
/// <20><><EFBFBD>ø<EFBFBD><C3B8>ڵ<EFBFBD>
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="pnode"></param>
|
|
|
|
|
void _set_parent_node(std::weak_ptr<LogicalNode> pnode);
|
|
|
|
|
|
2025-06-25 14:34:26 +00:00
|
|
|
|
public:
|
2025-06-28 17:38:37 +00:00
|
|
|
|
LogicalNode(NodeKind t = NodeKind::ACTIONNODE);
|
2025-06-25 14:34:26 +00:00
|
|
|
|
virtual ~LogicalNode() = default;
|
|
|
|
|
|
2025-06-29 12:30:32 +00:00
|
|
|
|
/// <summary>
|
|
|
|
|
/// <20><>ȡ<EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
NodeKind nodeKind() const;
|
2025-06-29 17:19:07 +00:00
|
|
|
|
/// <summary>
|
|
|
|
|
/// <20>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
int depth() const;
|
2025-06-29 12:30:32 +00:00
|
|
|
|
|
2025-06-28 17:38:37 +00:00
|
|
|
|
/// <summary>
|
2025-06-29 14:58:45 +00:00
|
|
|
|
/// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD>ڵ<EFBFBD>
|
2025-06-28 17:38:37 +00:00
|
|
|
|
/// </summary>
|
2025-06-29 14:58:45 +00:00
|
|
|
|
/// <returns></returns>
|
|
|
|
|
std::shared_ptr<LogicalNode> bindMap() const;
|
|
|
|
|
|
2025-06-28 17:38:37 +00:00
|
|
|
|
/// <summary>
|
2025-06-29 12:30:32 +00:00
|
|
|
|
/// <20><><EFBFBD>˽ڵ<CBBD>
|
2025-06-28 17:38:37 +00:00
|
|
|
|
/// </summary>
|
|
|
|
|
/// <returns></returns>
|
2025-06-29 12:30:32 +00:00
|
|
|
|
std::weak_ptr<LogicalNode> parent() const;
|
2025-06-28 17:38:37 +00:00
|
|
|
|
/// <summary>
|
2025-06-29 14:58:45 +00:00
|
|
|
|
/// <20><>ȡ<EFBFBD>ӽڵ<D3BD><DAB5>б<EFBFBD>
|
2025-06-28 17:38:37 +00:00
|
|
|
|
/// </summary>
|
|
|
|
|
/// <returns></returns>
|
2025-06-29 14:58:45 +00:00
|
|
|
|
virtual QList<std::shared_ptr<LogicalNode>> children() const;
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// <20><><EFBFBD><EFBFBD><EFBFBD>ӽڵ<D3BD>
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="node"></param>
|
|
|
|
|
/// <param name="index"></param>
|
|
|
|
|
virtual void insert(std::shared_ptr<LogicalNode> node, int index = -1);
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// <20>Ƴ<EFBFBD><C6B3>ӽڵ<D3BD>
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="node"></param>
|
|
|
|
|
virtual void remove(std::shared_ptr<LogicalNode> node);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-06-28 17:38:37 +00:00
|
|
|
|
|
2025-06-25 14:34:26 +00:00
|
|
|
|
/// <summary>
|
|
|
|
|
/// <20><><EFBFBD>ýڵ<C3BD>id
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="unique_id"></param>
|
2025-06-28 17:38:37 +00:00
|
|
|
|
void setID(int unique_id);
|
2025-06-25 14:34:26 +00:00
|
|
|
|
/// <summary>
|
|
|
|
|
/// <20><>ȡ<EFBFBD>ڵ<EFBFBD>id
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <returns></returns>
|
2025-06-28 17:38:37 +00:00
|
|
|
|
int getID() const;
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// ʵ<><CAB5><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <returns></returns>
|
2025-06-29 14:58:45 +00:00
|
|
|
|
QString rtName() const;
|
2025-06-28 17:38:37 +00:00
|
|
|
|
|
2025-06-25 14:34:26 +00:00
|
|
|
|
/// <summary>
|
|
|
|
|
/// <20><>ȡ<EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <returns></returns>
|
2025-06-28 17:38:37 +00:00
|
|
|
|
virtual QString typeName() const = 0;
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD>ʶ<EFBFBD><CAB6><EFBFBD><EFBFBD><EFBFBD>ݽӿ<DDBD>
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <returns>map{name, type-ins}</returns>
|
|
|
|
|
virtual QHash<QString, std::shared_ptr<TopicData>> inputList() const = 0;
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD>ʶ<EFBFBD><CAB6><EFBFBD><EFBFBD><EFBFBD>ݽӿ<DDBD>
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <returns>map{name, type-ins}</returns>
|
|
|
|
|
virtual QHash<QString, std::shared_ptr<TopicData>> outputList() const = 0;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
2025-06-29 14:58:45 +00:00
|
|
|
|
/// <20><><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD>״̬
|
2025-06-28 17:38:37 +00:00
|
|
|
|
/// </summary>
|
2025-06-29 14:58:45 +00:00
|
|
|
|
virtual void reset() = 0;
|
2025-06-25 14:34:26 +00:00
|
|
|
|
/// <summary>
|
2025-06-28 17:38:37 +00:00
|
|
|
|
/// <20><>ȡִ<C8A1><D6B4><EFBFBD><EFBFBD><EFBFBD>ڽڵ<DABD>
|
2025-06-25 14:34:26 +00:00
|
|
|
|
/// </summary>
|
2025-06-28 17:38:37 +00:00
|
|
|
|
/// <returns></returns>
|
|
|
|
|
virtual QList<std::shared_ptr<LogicalNode>> getForwards() const = 0;
|
2025-06-25 14:34:26 +00:00
|
|
|
|
/// <summary>
|
2025-06-28 17:38:37 +00:00
|
|
|
|
/// <20><><EFBFBD>нڵ<D0BD>ִ<EFBFBD><D6B4>״̬<D7B4>ط<EFBFBD><D8B7><EFBFBD><EFBFBD><EFBFBD>
|
2025-06-25 14:34:26 +00:00
|
|
|
|
/// </summary>
|
2025-06-28 17:38:37 +00:00
|
|
|
|
/// <param name="node"></param>
|
|
|
|
|
/// <param name="ste"></param>
|
|
|
|
|
/// <returns><3E><><EFBFBD><EFBFBD>ִ<EFBFBD>б<EFBFBD>־</returns>
|
|
|
|
|
virtual bool fallback(std::shared_ptr<LogicalNode> node, LogicalResult ste) = 0;
|
2025-06-29 14:58:45 +00:00
|
|
|
|
/// <summary>
|
|
|
|
|
/// ִ<><D6B4><EFBFBD><EFBFBD><DFBC>ڵ<EFBFBD>
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="core"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
virtual LogicalResult execute() = 0;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// <20>½<EFBFBD>Ĭ<EFBFBD><C4AC>ʵ<EFBFBD><CAB5>
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
virtual std::shared_ptr<Serializable> newDefault() const = 0;
|
2025-06-25 14:34:26 +00:00
|
|
|
|
};
|
|
|
|
|
|
2025-06-29 14:58:45 +00:00
|
|
|
|
|
2025-06-25 14:34:26 +00:00
|
|
|
|
/// <summary>
|
2025-06-28 17:38:37 +00:00
|
|
|
|
/// <20><EFBFBD><DFBC><EFBFBD><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
/// </summary>
|
|
|
|
|
enum class IO_TYPE {
|
|
|
|
|
INPUT, OUTPUT
|
|
|
|
|
};
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// <20>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD>ڵ<EFBFBD>ʵ<EFBFBD><CAB5>
|
2025-06-25 14:34:26 +00:00
|
|
|
|
/// </summary>
|
2025-06-29 14:58:45 +00:00
|
|
|
|
class COMPONENTBASIC_EXPORT BehaviorMapNode : public LogicalNode {
|
2025-06-28 17:38:37 +00:00
|
|
|
|
private:
|
2025-06-29 14:58:45 +00:00
|
|
|
|
std::shared_ptr<MapKernal> _bind_kernal;
|
|
|
|
|
QString _map_name;
|
|
|
|
|
|
2025-06-28 17:38:37 +00:00
|
|
|
|
/// <summary>
|
|
|
|
|
/// <20><>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
/// </summary>
|
|
|
|
|
QHash<QString, std::pair<IO_TYPE, std::shared_ptr<TopicData>>> _variables;
|
|
|
|
|
LogicalResult _state_value;
|
|
|
|
|
|
2025-06-25 14:34:26 +00:00
|
|
|
|
public:
|
2025-06-29 14:58:45 +00:00
|
|
|
|
BehaviorMapNode(std::shared_ptr<MapKernal> kernal);
|
2025-06-28 17:38:37 +00:00
|
|
|
|
|
|
|
|
|
|
2025-06-25 14:34:26 +00:00
|
|
|
|
/// <summary>
|
2025-06-28 17:38:37 +00:00
|
|
|
|
/// <20><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CDB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>׳<EFBFBD>UniException<6F>쳣
|
|
|
|
|
/// <20>ڵ<EFBFBD><DAB5><EFBFBD>ʼ<EFBFBD><CABC>ʱ<EFBFBD>ᰴ<EFBFBD><E1B0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><D7A2>Ĭ<EFBFBD><C4AC>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>
|
2025-06-25 14:34:26 +00:00
|
|
|
|
/// </summary>
|
2025-06-28 17:38:37 +00:00
|
|
|
|
virtual void setVariable(const QString& key, IO_TYPE t, std::shared_ptr<TopicData> ins);
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// <20><>ȡָ<C8A1><D6B8><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD>ݱ<EFBFBD><DDB1><EFBFBD>
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="key"></param>
|
|
|
|
|
/// <returns><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD>nullptr<74><72><EFBFBD><EFBFBD><EFBFBD>Ͳ<EFBFBD>ȷ<EFBFBD><C8B7></returns>
|
|
|
|
|
virtual std::shared_ptr<TopicData> getVariable(const QString& key) const;
|
|
|
|
|
|
|
|
|
|
|
2025-06-25 14:34:26 +00:00
|
|
|
|
/// <summary>
|
|
|
|
|
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="val"></param>
|
2025-06-28 17:38:37 +00:00
|
|
|
|
virtual void resetName(const QString& val);
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// <20><><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4>״̬
|
|
|
|
|
/// </summary>
|
|
|
|
|
void reset() override;
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// <20><>ȡ<EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
QString typeName() const override;
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// <20><>ȡǰ<C8A1>ýڵ<C3BD>
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
QList<std::shared_ptr<LogicalNode>> getForwards() const override;
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// <20><><EFBFBD><EFBFBD>״̬
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="node"></param>
|
|
|
|
|
/// <param name="ste"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
bool fallback(std::shared_ptr<LogicalNode> node, LogicalResult ste) override;
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// ִ<><D6B4>״̬
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
LogicalResult execute() override;
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
QHash<QString, std::shared_ptr<TopicData>> inputList() const override;
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
QHash<QString, std::shared_ptr<TopicData>> outputList() const override;
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="p"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
virtual std::shared_ptr<Serializable> newDefault() const override;
|
|
|
|
|
void recoveryFrom(const QJsonObject& obj) override;
|
|
|
|
|
void saveTo(QJsonObject& obj) const override;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// <20><>Ϊ<EFBFBD><CEAA><EFBFBD>ڵ<EFBFBD> ======================================================
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// ˳<><CBB3><EFBFBD>ڵ<EFBFBD>
|
|
|
|
|
/// </summary>
|
2025-06-29 14:58:45 +00:00
|
|
|
|
class COMPONENTBASIC_EXPORT SequenceNode : public LogicalNode {
|
2025-06-28 17:38:37 +00:00
|
|
|
|
private:
|
|
|
|
|
QHash<int, LogicalResult> _state_map;
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
SequenceNode();
|
|
|
|
|
|
|
|
|
|
QList<std::shared_ptr<LogicalNode>> getForwards() const override;
|
|
|
|
|
QString typeName() const override;
|
|
|
|
|
|
|
|
|
|
LogicalResult execute() override;
|
|
|
|
|
QHash<QString, std::shared_ptr<TopicData>> inputList() const override;
|
|
|
|
|
QHash<QString, std::shared_ptr<TopicData>> outputList() const override;
|
|
|
|
|
|
|
|
|
|
void reset() override;
|
|
|
|
|
bool fallback(std::shared_ptr<LogicalNode> node, LogicalResult ste) override;
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// <20><>ʵ<EFBFBD><CAB5>
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="p"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
virtual std::shared_ptr<Serializable> newDefault() const override;
|
|
|
|
|
|
|
|
|
|
void recoveryFrom(const QJsonObject& obj) override;
|
|
|
|
|
void saveTo(QJsonObject& obj) const override;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// ѡ<><D1A1><EFBFBD>ڵ<EFBFBD>
|
|
|
|
|
/// </summary>
|
2025-06-29 14:58:45 +00:00
|
|
|
|
class COMPONENTBASIC_EXPORT SelectorNode : public LogicalNode {
|
2025-06-28 17:38:37 +00:00
|
|
|
|
private:
|
|
|
|
|
QHash<int, LogicalResult> _state_map;
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
SelectorNode();
|
|
|
|
|
|
|
|
|
|
QList<std::shared_ptr<LogicalNode>> getForwards() const override;
|
|
|
|
|
QString typeName() const override;
|
|
|
|
|
|
|
|
|
|
LogicalResult execute() override;
|
|
|
|
|
QHash<QString, std::shared_ptr<TopicData>> inputList() const override;
|
|
|
|
|
QHash<QString, std::shared_ptr<TopicData>> outputList() const override;
|
|
|
|
|
|
|
|
|
|
void reset() override;
|
|
|
|
|
bool fallback(std::shared_ptr<LogicalNode> node, LogicalResult ste) override;
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// <20><>ʵ<EFBFBD><CAB5>
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="p"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
virtual std::shared_ptr<Serializable> newDefault() const override;
|
|
|
|
|
|
|
|
|
|
void recoveryFrom(const QJsonObject& obj) override;
|
|
|
|
|
void saveTo(QJsonObject& obj) const override;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// <20><><EFBFBD>нڵ<D0BD>
|
|
|
|
|
/// </summary>
|
2025-06-29 14:58:45 +00:00
|
|
|
|
class COMPONENTBASIC_EXPORT ParallelNode : public LogicalNode {
|
2025-06-28 17:38:37 +00:00
|
|
|
|
private:
|
|
|
|
|
QHash<int, LogicalResult> _state_map;
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
ParallelNode();
|
|
|
|
|
|
|
|
|
|
QHash<QString, std::shared_ptr<TopicData>> inputList() const override;
|
|
|
|
|
QHash<QString, std::shared_ptr<TopicData>> outputList() const override;
|
|
|
|
|
|
|
|
|
|
QString typeName() const override;
|
|
|
|
|
|
|
|
|
|
QList<std::shared_ptr<LogicalNode>> getForwards() const override;
|
|
|
|
|
bool fallback(std::shared_ptr<LogicalNode> node, LogicalResult ste) override;
|
|
|
|
|
|
|
|
|
|
LogicalResult execute() override;
|
|
|
|
|
void reset() override;
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// <20><>ʵ<EFBFBD><CAB5>
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="p"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
virtual std::shared_ptr<Serializable> newDefault() const override;
|
|
|
|
|
void recoveryFrom(const QJsonObject& obj) override;
|
|
|
|
|
void saveTo(QJsonObject& obj) const override;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// <20>ȽϽڵ<CFBD>
|
|
|
|
|
/// </summary>
|
|
|
|
|
class COMPONENTBASIC_EXPORT CompareNode : public LogicalNode {
|
|
|
|
|
private:
|
2025-06-30 05:49:36 +00:00
|
|
|
|
std::shared_ptr<CompareDelegate> _bind_delegate;
|
2025-06-28 17:38:37 +00:00
|
|
|
|
QHash<QString, std::shared_ptr<TopicData>> _data_map;
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
CompareNode();
|
|
|
|
|
|
|
|
|
|
QString delegateName() const;
|
2025-06-30 05:49:36 +00:00
|
|
|
|
void bindDelegate(std::shared_ptr<CompareDelegate> ins);
|
2025-06-28 17:38:37 +00:00
|
|
|
|
|
|
|
|
|
QHash<QString, std::shared_ptr<TopicData>> inputList() const override;
|
|
|
|
|
QHash<QString, std::shared_ptr<TopicData>> outputList() const override;
|
|
|
|
|
|
2025-06-29 14:58:45 +00:00
|
|
|
|
virtual void insert(std::shared_ptr<LogicalNode> node, int index /*= -1*/) override;
|
|
|
|
|
|
2025-06-28 17:38:37 +00:00
|
|
|
|
QString typeName() const override;
|
|
|
|
|
|
2025-06-29 14:58:45 +00:00
|
|
|
|
virtual QList<std::shared_ptr<LogicalNode>> getForwards() const override;
|
|
|
|
|
virtual bool fallback(std::shared_ptr<LogicalNode> node, LogicalResult ste) override;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
LogicalResult execute() override;
|
2025-06-28 17:38:37 +00:00
|
|
|
|
void reset() override;
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// <20><>ʵ<EFBFBD><CAB5>
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="p"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
virtual std::shared_ptr<Serializable> newDefault() const override;
|
|
|
|
|
void recoveryFrom(const QJsonObject& obj) override;
|
|
|
|
|
void saveTo(QJsonObject& obj) const override;
|
2025-06-25 14:34:26 +00:00
|
|
|
|
};
|
|
|
|
|
|
2025-06-28 17:38:37 +00:00
|
|
|
|
// <20><>Ϊ<EFBFBD>ڵ<EFBFBD> ====================================================================
|
|
|
|
|
|
2025-06-25 14:34:26 +00:00
|
|
|
|
/// <summary>
|
|
|
|
|
/// <20><>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
/// </summary>
|
2025-06-28 17:38:37 +00:00
|
|
|
|
class COMPONENTBASIC_EXPORT BehaviorPerformPlugin :
|
|
|
|
|
public RespondRoute<
|
|
|
|
|
WsRespond<EntityInitialRequest, RespondDefault>,
|
|
|
|
|
WsRespond<EntityPreparedRequest, RespondDefault>,
|
|
|
|
|
WsRespond<SyncRequest, RespondDefault>,
|
|
|
|
|
WsRespond<DeduceRequest, RespondDefault>>,
|
|
|
|
|
public RequestRoute<>
|
|
|
|
|
{
|
2025-06-25 14:34:26 +00:00
|
|
|
|
private:
|
|
|
|
|
std::weak_ptr<WsEntity> _bind_entity;
|
|
|
|
|
|
|
|
|
|
public:
|
2025-06-28 17:38:37 +00:00
|
|
|
|
void mapReset(const QString &path);
|
|
|
|
|
|
2025-06-25 14:34:26 +00:00
|
|
|
|
// ͨ<><CDA8> ProcList <20>̳<EFBFBD>
|
2025-06-28 17:38:37 +00:00
|
|
|
|
void execute(std::shared_ptr<const EntityInitialRequest> in, QList<std::shared_ptr<RespondDefault>>& out) override;
|
|
|
|
|
void execute(std::shared_ptr<const EntityPreparedRequest> in, QList<std::shared_ptr<RespondDefault>>& out) override;
|
|
|
|
|
void execute(std::shared_ptr<const SyncRequest> in, QList<std::shared_ptr<RespondDefault>>& out) override;
|
|
|
|
|
void execute(std::shared_ptr<const DeduceRequest> in, QList<std::shared_ptr<RespondDefault>>& out) override;
|
2025-06-25 14:34:26 +00:00
|
|
|
|
|
|
|
|
|
void recoveryFrom(const QJsonObject& obj) override;
|
|
|
|
|
void saveTo(QJsonObject& obj) const override;
|
|
|
|
|
|
2025-06-28 17:38:37 +00:00
|
|
|
|
std::shared_ptr<Serializable> newDefault() const override;
|
2025-06-25 14:34:26 +00:00
|
|
|
|
void bindEntity(std::weak_ptr<WsEntity> host) override;
|
|
|
|
|
QString name() const override;
|
|
|
|
|
};
|
|
|
|
|
|