file.h 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. /*
  2. * Copyright 2010-2018 Branimir Karadzic. All rights reserved.
  3. * License: https://github.com/bkaradzic/bx#license-bsd-2-clause
  4. */
  5. #ifndef BX_FILE_H_HEADER_GUARD
  6. #define BX_FILE_H_HEADER_GUARD
  7. #include "filepath.h"
  8. #include "readerwriter.h"
  9. namespace bx
  10. {
  11. ///
  12. ReaderI* getStdIn();
  13. ///
  14. WriterI* getStdOut();
  15. ///
  16. WriterI* getStdErr();
  17. ///
  18. WriterI* getNullOut();
  19. ///
  20. class FileReader : public FileReaderI
  21. {
  22. public:
  23. ///
  24. FileReader();
  25. ///
  26. virtual ~FileReader();
  27. ///
  28. virtual bool open(const FilePath& _filePath, Error* _err) override;
  29. ///
  30. virtual void close() override;
  31. ///
  32. virtual int64_t seek(int64_t _offset = 0, Whence::Enum _whence = Whence::Current) override;
  33. ///
  34. virtual int32_t read(void* _data, int32_t _size, Error* _err) override;
  35. private:
  36. BX_ALIGN_DECL(16, uint8_t) m_internal[64];
  37. };
  38. ///
  39. class FileWriter : public FileWriterI
  40. {
  41. public:
  42. ///
  43. FileWriter();
  44. ///
  45. virtual ~FileWriter();
  46. ///
  47. virtual bool open(const FilePath& _filePath, bool _append, Error* _err) override;
  48. ///
  49. virtual void close() override;
  50. ///
  51. virtual int64_t seek(int64_t _offset = 0, Whence::Enum _whence = Whence::Current) override;
  52. ///
  53. virtual int32_t write(const void* _data, int32_t _size, Error* _err) override;
  54. private:
  55. BX_ALIGN_DECL(16, uint8_t) m_internal[64];
  56. };
  57. ///
  58. struct FileInfo
  59. {
  60. enum Enum
  61. {
  62. Regular,
  63. Directory,
  64. Count
  65. };
  66. uint64_t m_size;
  67. Enum m_type;
  68. };
  69. ///
  70. bool stat(const FilePath& _filePath, FileInfo& _outFileInfo);
  71. } // namespace bx
  72. #endif // BX_FILE_H_HEADER_GUARD