// Copyright (c) 2012-2023 Wojciech Figat. All rights reserved. #pragma once #if PLATFORM_WIN32 #include "Engine/Platform/Base/FileBase.h" /// /// Win32 platform file object implementation /// class FLAXENGINE_API Win32File : public FileBase { private: void* _handle; public: /// /// Initializes a new instance of the class. /// /// The handle. Win32File(void* handle) : _handle(handle) { } /// /// Finalizes an instance of the class. /// ~Win32File(); public: /// /// Creates or opens a file. /// /// The name of the file to be created or opened. /// An action to take on a file that exists or does not exist. /// The requested access to the file. /// The requested sharing mode of the file. /// Opened file handle or null if cannot. static Win32File* Open(const StringView& path, FileMode mode, FileAccess access = FileAccess::ReadWrite, FileShare share = FileShare::None); public: // [FileBase] bool Read(void* buffer, uint32 bytesToRead, uint32* bytesRead = nullptr) override; bool Write(const void* buffer, uint32 bytesToWrite, uint32* bytesWritten = nullptr) override; void Close() final override; uint32 GetSize() const override; DateTime GetLastWriteTime() const override; uint32 GetPosition() const override; void SetPosition(uint32 seek) override; bool IsOpened() const override; }; #endif