#include "FITKProgramDriverFactory.h" namespace AppFrame { //静态变量初始化 FITKProgramDriverFactory* FITKProgramDriverFactory::_instance = nullptr; QMutex FITKProgramDriverFactory::m_mutex; QList 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 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__; }