You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

78 lines
2.5 KiB
C++

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#include "FITKProgramDriverFactory.h"
namespace AppFrame
{
//静态变量初始化
FITKProgramDriverFactory* FITKProgramDriverFactory::_instance = nullptr;
QMutex FITKProgramDriverFactory::m_mutex;
QList<int> FITKProgramDriverFactory::getProgramTypes()
{
return _createFuns.uniqueKeys();
}
/**
* @brief 获取指定驱动类型的程序驱动器列表
*
* 本函数根据传入的驱动类型,返回对应类型的程序驱动器名称列表。如果给定的驱动类型不存在,
* 则返回一个空的字符串列表。
*
* @param driverType 驱动类型标识
* @return QStringList 包含指定驱动类型的所有驱动器名称的列表
*/
QStringList FITKProgramDriverFactory::getProgramDrivers(const int driverType)
{
// 检查驱动类型是否存在于创建函数映射中,如果不存在则返回空列表
if (!_createFuns.contains(driverType)) return QStringList();
// 获取指定驱动类型的驱动器创建函数集合
DRIVERTypeFuns ds = _createFuns.value(driverType);
// 返回指定驱动类型的驱动器名称列表
return ds.keys();
}
/**
* 根据类型和驱动名称获取驱动创建函数。
*
* @param t 驱动类型。
* @param driver 驱动名称。
* @return 返回对应的驱动创建函数如果找不到则返回nullptr。
*/
std::function<FITKAbstractProgramerDriver*()> FITKProgramDriverFactory::getDriverCreateFun(const int t, const QString driver)
{
// 检查驱动类型是否注册如果没有注册则直接返回nullptr。
if (!_createFuns.contains(t)) return nullptr;
// 获取指定驱动类型下的驱动创建函数集合。
DRIVERTypeFuns ds = _createFuns.value(t);
// 检查驱动名称是否在创建函数集合中如果不在则返回nullptr。
if (!ds.contains(driver)) return nullptr;
// 返回指定驱动名称对应的驱动创建函数。
return ds.value(driver);
}
void FITKProgramDriverFactory::initialize()
{
}
void FITKProgramDriverFactory::finalize()
{
_createFuns.clear();
}
FITKProgramDriverFactoryDeleator::~FITKProgramDriverFactoryDeleator()
{
if (FITKProgramDriverFactory::_instance)
delete FITKProgramDriverFactory::_instance;
FITKProgramDriverFactory::_instance = nullptr;
}
static FITKProgramDriverFactoryDeleator _FPDFDELEATOR__;
}