/* ------------------------------------------- Copyright SoftwareLabs ------------------------------------------- */ #pragma once #include #include #include #include namespace NewOS { /// @brief ATA device interface type. class ATADeviceInterface : public DeviceInterface { public: explicit ATADeviceInterface(void (*Out)(MountpointInterface* outpacket), void (*In)(MountpointInterface* inpacket), void (*Cleanup)(void)); virtual ~ATADeviceInterface(); public: ATADeviceInterface& operator<<(MountpointInterface* Data) override; ATADeviceInterface& operator>>(MountpointInterface* Data) override; public: ATADeviceInterface& operator=(const ATADeviceInterface&) = default; ATADeviceInterface(const ATADeviceInterface&) = default; const char* Name() const override; private: void (*fCleanup)(void); }; } // namespace NewOS