/* ======================================== Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license. ======================================== */ #ifndef __BOOTKIT_DEVICE_H__ #define __BOOTKIT_DEVICE_H__ #include #include #include namespace Boot { /// @brief Physical/Virtual device type. class Device { public: explicit Device() = default; virtual ~Device() = default; NE_MOVE_DEFAULT(Device) struct Trait { Lba mBase{0}; SizeT mSize{0}; }; virtual Trait& Leak() = 0; virtual Device& Read(Char* Buf, SizeT SecCount) = 0; virtual Device& Write(Char* Buf, SizeT SecCount) = 0; }; using BootDevice = Device; using NetworkDevice = Device; using DiskDevice = Device; } // namespace Boot #endif