Advertisement
Ember

File

Aug 25th, 2014
273
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.71 KB | None | 0 0
  1. /*
  2. -----------------------------------------------------------------------------
  3. Filename: File.hpp
  4. -----------------------------------------------------------------------------
  5.  
  6. -----------------------------------------------------------------------------
  7. */
  8.  
  9. // Declare Once
  10. #pragma once
  11. // Includes
  12. #include "Defines.hpp"
  13.  
  14. // Namespace ------------------------------------------------------------------------------
  15. namespace R3D
  16. {
  17.     // Class definition -------------------------------------------------------------------
  18.     class File
  19.     {
  20.     public:
  21.         // Constructors
  22.         File() = default;
  23.         File(const File& other) = delete;
  24.         ~File() = default;
  25.  
  26.         // Stuff
  27.         enum class Mode : Byte { Read = 1, Write = 2, Overwrite = 4 };
  28.         enum class Offset : Byte { Begin, Current, End };
  29.  
  30.         // Methods
  31.         bool Open(String filename, Mode filemode);
  32.         bool Allocate(UInt size);
  33.         template <typename T> T Read();
  34.         template <typename T> T* Read(UInt count);
  35.         template <typename T> void Read(void* buffer);
  36.         template <typename T> void Read(void* buffer, UInt count);
  37.         template <typename T> Int Write(T data);
  38.         template <typename T> Int Write(T data, UInt count);
  39.         Pointer Load(UInt count);
  40.         UInt Seek(Offset offset, UInt seek);
  41.         void Close();
  42.  
  43.         // Reading
  44.  
  45.         // Public members
  46.         UInt FileSize;
  47.         Pointer Data;
  48.         UInt Size;
  49.         UInt Position;
  50.         bool Opened;
  51.         bool End;
  52.  
  53.     private:
  54.         // Private members
  55.         HANDLE mFile;
  56.         BY_HANDLE_FILE_INFORMATION mFileInfo;
  57.     };
  58. }
  59.  
  60. // Define templated functions
  61. #include "File.tpp"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement