CMCore/inc/hgl/thread/Loader.h

73 lines
2.1 KiB
C
Raw Permalink Normal View History

2023-07-21 23:57:15 +08:00
#pragma once
2019-08-19 19:19:58 +08:00
2023-07-15 00:45:46 +08:00
#include<hgl/type/String.h>
2019-08-19 19:19:58 +08:00
#include<hgl/object/EnumObject.h>
#include<hgl/thread/Thread.h>
namespace hgl
{
class HAC;
/**
*
*/
class Loader:public EnumObject,public Thread ///加载器
{
public:
/**
*
*/
enum LoaderStatus //加载器状态
{
lsNone=0, //未使用
lsLoad, //正在加载
lsProc, //正在处理
lsProcFinish, //处理完成
lsClear, //清理
lsClearFinish, //清理完成
lsEnd, //完成
};
protected:
LoaderStatus status;
void SetStatus(LoaderStatus);
HAC *loader_hac;
U16String loader_filename;
2019-08-19 19:19:58 +08:00
void *loader_pointer;
void *loader_data;
int loader_size;
protected: //被动事件
virtual void ProcFinish()=default; ///<加载完成(异步事件)
virtual void ProcEnd()=default; ///<结束处理
virtual void ProcClear()=default; ///<清理处理(异步事件)
public: //事件
DefEvent(void,OnError,(Loader *)); ///<出错事件
DefEvent(void,OnEnd,(Loader *)); ///<完成事件,在ProcEnd之后,ProcClear之前被调用
public:
Loader();
virtual ~Loader()=default;
bool Execute();
void Update();
public: //方法
bool Load(HAC *,const u16char *); ///<加载一个文件到某个对象
LoaderStatus GetStatus(); ///<取得状态
};//class Loader
}//namespace hgl