diff --git a/include/bx/file.h b/include/bx/file.h index 951c297..25abf46 100644 --- a/include/bx/file.h +++ b/include/bx/file.h @@ -11,19 +11,19 @@ namespace bx { - /// + /// Returns standard input reader. ReaderI* getStdIn(); - /// + /// Returns standard output writer. WriterI* getStdOut(); - /// + /// Returns standard error writer. WriterI* getStdErr(); - /// + /// Returns null output writer. WriterI* getNullOut(); - /// + /// File reader. class FileReader : public FileReaderI { public: @@ -49,7 +49,7 @@ namespace bx BX_ALIGN_DECL(16, uint8_t) m_internal[64]; }; - /// + /// File writer. class FileWriter : public FileWriterI { public: @@ -75,26 +75,28 @@ namespace bx BX_ALIGN_DECL(16, uint8_t) m_internal[64]; }; + /// File type. struct FileType { + /// File types: enum Enum { - File, - Dir, + File, //!< File. + Dir, //!< Directory. Count }; }; - /// + /// File info. struct FileInfo { - FilePath filePath; - uint64_t size; - FileType::Enum type; + FilePath filePath; //!< File path. + uint64_t size; //!< File size. + FileType::Enum type; //!< File type. }; - /// + /// Directory reader. class DirectoryReader : public ReaderOpenI, public CloserI, public ReaderI { public: @@ -117,7 +119,7 @@ namespace bx BX_ALIGN_DECL(16, uint8_t) m_internal[sizeof(FilePath)+sizeof(FileInfo)+16]; }; - /// + /// FIle stat. bool stat(FileInfo& _outFileInfo, const FilePath& _filePath); } // namespace bx diff --git a/include/bx/readerwriter.h b/include/bx/readerwriter.h index c00fdc5..ed61f46 100644 --- a/include/bx/readerwriter.h +++ b/include/bx/readerwriter.h @@ -22,94 +22,116 @@ BX_ERROR_RESULT(BX_ERROR_READERWRITER_ALREADY_OPEN, BX_MAKEFOURCC('R', 'W', 0, 5 namespace bx { - /// + /// The position from where offset is added. struct Whence { + /// Whence values: enum Enum { - Begin, - Current, - End, + Begin, //!< From begining of file. + Current, //!< From current position of file. + End, //!< From end of file. }; }; - /// + /// Reader interface. struct BX_NO_VTABLE ReaderI { + /// virtual ~ReaderI() = 0; + + /// virtual int32_t read(void* _data, int32_t _size, Error* _err) = 0; }; - /// + /// Writer interface. struct BX_NO_VTABLE WriterI { + /// virtual ~WriterI() = 0; + + /// virtual int32_t write(const void* _data, int32_t _size, Error* _err) = 0; }; - /// + /// Seeker interface. struct BX_NO_VTABLE SeekerI { + /// virtual ~SeekerI() = 0; + + /// virtual int64_t seek(int64_t _offset = 0, Whence::Enum _whence = Whence::Current) = 0; }; - /// + /// Reader seeker interface. struct BX_NO_VTABLE ReaderSeekerI : public ReaderI, public SeekerI { }; - /// + /// Writer seeker interface. struct BX_NO_VTABLE WriterSeekerI : public WriterI, public SeekerI { }; - /// + /// Open for reading interface. struct BX_NO_VTABLE ReaderOpenI { + /// virtual ~ReaderOpenI() = 0; + + /// virtual bool open(const FilePath& _filePath, Error* _err) = 0; }; - /// + /// Open for writing interface. struct BX_NO_VTABLE WriterOpenI { + /// virtual ~WriterOpenI() = 0; + + /// virtual bool open(const FilePath& _filePath, bool _append, Error* _err) = 0; }; - /// + /// Open process interface. struct BX_NO_VTABLE ProcessOpenI { + /// virtual ~ProcessOpenI() = 0; + + /// virtual bool open(const FilePath& _filePath, const StringView& _args, Error* _err) = 0; }; - /// + /// Closer interface. struct BX_NO_VTABLE CloserI { + /// virtual ~CloserI() = 0; + + /// virtual void close() = 0; }; - /// + /// File reader interface. struct BX_NO_VTABLE FileReaderI : public ReaderOpenI, public CloserI, public ReaderSeekerI { }; - /// + /// File writer interface. struct BX_NO_VTABLE FileWriterI : public WriterOpenI, public CloserI, public WriterSeekerI { }; - /// + /// Memory block interface. struct BX_NO_VTABLE MemoryBlockI { virtual void* more(uint32_t _size = 0) = 0; virtual uint32_t getSize() = 0; }; - /// + /// Static memory block interface. class StaticMemoryBlock : public MemoryBlockI { public: @@ -126,11 +148,11 @@ namespace bx virtual uint32_t getSize() override; private: - void* m_data; + void* m_data; uint32_t m_size; }; - /// + /// Memory block. class MemoryBlock : public MemoryBlockI { public: @@ -148,8 +170,8 @@ namespace bx private: AllocatorI* m_allocator; - void* m_data; - uint32_t m_size; + void* m_data; + uint32_t m_size; }; /// Sizer writer. Dummy writter that only counts number of bytes written into it. @@ -173,7 +195,7 @@ namespace bx int64_t m_top; }; - /// + /// Memory reader. class MemoryReader : public ReaderSeekerI { public: @@ -204,7 +226,7 @@ namespace bx int64_t m_top; }; - /// + /// Memory writer. class MemoryWriter : public WriterSeekerI { public: @@ -223,9 +245,9 @@ namespace bx private: MemoryBlockI* m_memBlock; uint8_t* m_data; - int64_t m_pos; - int64_t m_top; - int64_t m_size; + int64_t m_pos; + int64_t m_top; + int64_t m_size; }; /// Static (fixed size) memory block writer.