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.
AppFlow/FITK_Component/FITKGeoOCCIOHDF5/FITKOCCIOHDF5Interface.h

188 lines
5.1 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.

/*****************************************************************//**
*
* @file FITKOCCIOHDF5Interface.h
* @brief HDF5文件读写接口
* @author fulipeng (flipengqd@yeah.net)
* @date 2024-09-09
*
*********************************************************************/
#ifndef _FITKOCCIOHDF5Interface_H__
#define _FITKOCCIOHDF5Interface_H__
#include <QObject>
#include "FITKGeoOCCIOHDF5API.h"
#include "FITK_Kernel/FITKCore/FITKCoreMacros.h"
#include "FITK_Kernel/FITKAppFramework/FITKComponentInterface.h"
ForwardDeclarNS(Core, FITKAbstractDataObject);
ForwardDeclarNS(Interface, FITKAbstractIO);
ForwardDeclarNS(H5, Group);
ForwardDeclarNS(H5, DataType);
ForwardDeclarNS(H5, H5File);
namespace IO
{
/**
* @brief HDF5文件读取接口
* @author fulipeng (fulipengqd@yeah.net)
* @date 2024-03-12
*/
class FITKGEOOCCIOHDF5API FITKOCCIOHDF5Interface : public QObject, public AppFrame::FITKComponentInterface
{
Q_OBJECT
public:
FITKOCCIOHDF5Interface() = default;
virtual ~FITKOCCIOHDF5Interface() = default;
/**
* @brief 设置文件名称
* @param fileName 文件名称
* @author fulipeng (fulipengqd@yeah.net)
* @date 2024-09-09
*/
void setFileName(const QString& fileName);
/**
* @brief 打开文件流
* @param state 1 读取 2 写出
* @return 是否打开成功
* @author fulipeng (fulipengqd@yeah.net)
* @date 2024-09-09
*/
bool openFileStream(int state);
/**
* @brief 关闭文件流
* @return 是否关闭成功
* @author fulipeng (fulipengqd@yeah.net)
* @date 2024-09-09
*/
bool closeFileStream();
/**
* @brief 获取组件名称,不能重复 return "FITKAbaqusHDF5IO"
* @return QString
* @author fulipeng (fulipengqd@yeah.net)
* @date 2024-09-09
*/
virtual QString getComponentName() override;
/**
* @brief 文件读写时的数据对象
* @param dataObject 数据对象
* @author fulipeng (fulipengqd@yeah.net)
* @date 2024-09-09
*/
void setDataObject(Core::FITKAbstractDataObject* dataObject);
/**
* @brief 执行读取或写出
* @param indexPort 1读取 2写出
* @return
* @author fulipeng (fulipengqd@yeah.net)
* @date 2024-09-09
*/
virtual bool exec(const int indexPort) override;
/**
* @brief 获取是否执行成功标记
* @return bool
* @author fulipeng (fulipengqd@yeah.net)
* @date 2024-09-09
*/
bool isSuccess();
/**
* @brief 是否在执行中
* @return true 执行中 false未在执行
* @author fulipeng (fulipengqd@yeah.net)
* @date 2024-09-09
*/
bool isRunning();
/**
* @brief 设置是否在独立的线程运行。默认true为在独立线程执行
* @param r 是否在独立线程运行
* @author fulipeng (fulipengqd@yeah.net)
* @date 2024-09-09
*/
void setRunInThread(bool r = true);
/**
* @brief 读取 弃用
* @return true 执行中 false未在执行
* @author fulipeng (fulipengqd@yeah.net)
* @date 2024-09-09
*/
bool read();
/**
* @brief 写出 弃用
* @return true 执行中 false未在执行
* @author fulipeng (fulipengqd@yeah.net)
* @date 2024-09-09
*/
bool write();
signals:
/**
* @brief 读取线程结束发送信号
* @author fulipeng (fulipengqd@yeah.net)
* @date 2024-09-09
*/
void ioThreadFinishedSig();
private slots:
/**
* @brief 读取线程结束处理槽函数
* @author fulipeng (fulipengqd@yeah.net)
* @date 2024-09-09
*/
void ioThreadFinishedSlot();
private:
/**
* @brief 文件名
* @author fulipeng (fulipengqd@yeah.net)
* @date 2024-09-09
*/
QString _fileName{};
/**
* @brief H5的文件指针
* @author fulipeng (fulipengqd@yeah.net)
* @date 2024-09-09
*/
H5::H5File* _h5File{};
/**
* @brief 数据对象
* @author fulipeng (fulipengqd@yeah.net)
* @date 2024-09-09
*/
Core::FITKAbstractDataObject* _dataObject{};
/**
* @brief 是否执行成功标记
* @author fulipeng (fulipengqd@yeah.net)
* @date 2024-05-27
*/
bool _success{ false };
/**
* @brief 读取线程
* @author fulipeng (fulipengqd@yeah.net)
* @date 2024-05-27
*/
Interface::FITKAbstractIO * _io = nullptr;
/**
* @brief 是否在线程运行
* @author fulipeng (fulipengqd@yeah.net)
* @date 2024-05-27
*/
bool _runInThread{ true };
};
}
#endif //