XNSim/XNMonitor/TopicMonitorFactory/TopicMonitorFactory.h

64 lines
1.5 KiB
C
Raw Permalink Normal View History

2025-04-28 12:25:20 +08:00
/**
* @file TopicMonitorFactory.h
* @author jinchao
* @brief
* @version 1.0
* @date 2025-03-10
*
* @copyright Copyright (c) 2025 COMAC
*
*/
#pragma once
#include <QString>
#include <QSharedPointer>
#include "TopicMonitor.h"
/**
* @brief
*/
class TopicMonitorFactory
{
public:
/**
* @brief
* @return TopicMonitorFactory&:
*/
static TopicMonitorFactory &getInstance();
/**
* @brief
* @param modelName:
* @param parent:
* @return QSharedPointer<TopicMonitor>:
*/
QSharedPointer<TopicMonitor> createMonitor(const QString &modelName, QObject *parent = nullptr);
/**
* @brief
* @param modelName:
* @param creator:
*/
void registerMonitorType(const QString &modelName,
std::function<TopicMonitor *(QObject *)> creator);
/**
* @brief
*/
void clearMonitors();
private:
/**
* @brief
*/
TopicMonitorFactory() {}
/**
* @brief
*/
QMap<QString, std::function<TopicMonitor *(QObject *)>> m_creators;
/**
* @brief ->
*/
QMap<QString, QSharedPointer<TopicMonitor>> m_monitorInstances;
};