2
0

CInputStream.h 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. /*
  2. * CInputStream.h, part of VCMI engine
  3. *
  4. * Authors: listed in file AUTHORS in main folder
  5. *
  6. * License: GNU General Public License v2.0 or later
  7. * Full text of license available in license.txt file, in main folder
  8. *
  9. */
  10. #pragma once
  11. /**
  12. * Abstract class which provides method definitions for reading from a stream.
  13. */
  14. class DLL_LINKAGE CInputStream : private boost::noncopyable
  15. {
  16. public:
  17. /**
  18. * D-tor.
  19. */
  20. virtual ~CInputStream() {}
  21. /**
  22. * Reads n bytes from the stream into the data buffer.
  23. *
  24. * @param data A pointer to the destination data array.
  25. * @param size The number of bytes to read.
  26. * @return the number of bytes read actually.
  27. */
  28. virtual si64 read(ui8 * data, si64 size) = 0;
  29. /**
  30. * Seeks the internal read pointer to the specified position.
  31. *
  32. * @param position The read position from the beginning.
  33. * @return the position actually moved to, -1 on error.
  34. */
  35. virtual si64 seek(si64 position) = 0;
  36. /**
  37. * Gets the current read position in the stream.
  38. *
  39. * @return the read position.
  40. */
  41. virtual si64 tell() = 0;
  42. /**
  43. * Skips delta numbers of bytes.
  44. *
  45. * @param delta The count of bytes to skip.
  46. * @return the count of bytes skipped actually.
  47. */
  48. virtual si64 skip(si64 delta) = 0;
  49. /**
  50. * Gets the length in bytes of the stream.
  51. *
  52. * @return the length in bytes of the stream.
  53. */
  54. virtual si64 getSize() = 0;
  55. /**
  56. * Closes the stream and releases any system resources associated with the stream explicitely.
  57. */
  58. //virtual void close() = 0;
  59. };