Extra2D/include/module/imodule.h

70 lines
1.6 KiB
C
Raw Normal View History

#pragma once
#include <types/base/types.h>
namespace extra2d {
/**
* @brief
*/
enum class ModuleType : uint8 {
Core, // 核心模块(必须)
System, // 系统模块(平台相关)
Feature, // 功能模块
Extension // 扩展模块
};
/**
* @brief - 线
*
*
*
*
*
* -
* - 线
* - ModuleRegistry
*/
class IModule {
public:
virtual ~IModule() = default;
/**
* @brief
* @return
*/
virtual const char* name() const = 0;
/**
* @brief
* @return
*/
virtual ModuleType type() const { return ModuleType::Feature; }
/**
* @brief
* @return
*/
virtual int priority() const { return 0; }
/**
* @brief
*
*
* false
*
* @return
*/
virtual bool init() { return true; }
/**
* @brief
*
*
* RAII
*/
virtual void shutdown() {}
};
} // namespace extra2d