hole_stream.h
上传用户:kx_jwh
上传日期:2021-09-03
资源大小:76k
文件大小:1k
源码类别:

STL

开发平台:

Visual C++

  1. /* vim: set tabstop=4 : */
  2. #ifndef __febird_io_hole_stream_h__
  3. #define __febird_io_hole_stream_h__
  4. #if defined(_MSC_VER) && (_MSC_VER >= 1020)
  5. # pragma once
  6. #endif
  7. //#include <assert.h>
  8. //#include <string.h> // for memcpy
  9. //#include <boost/current_function.hpp>
  10. //#include <boost/type_traits/integral_constant.hpp>
  11. #include "../stdtypes.h"
  12. //#include "IOException.h"
  13. namespace febird {
  14. class HoleStream
  15. {
  16. public:
  17. explicit HoleStream() : m_pos(0) {}
  18. // size_t read(void* vbuf, size_t length) { m_pos += length; return length; }
  19. size_t write(const void* vbuf, size_t length) { m_pos += length; return length; }
  20. // void ensureRead(void* vbuf, size_t length) { m_pos += length; }
  21. void ensureWrite(const void* vbuf, size_t length) { m_pos += length; }
  22. // byte readByte() { return 0; }
  23. void writeByte(unsigned char) { m_pos++; }
  24. private:
  25. stream_position_t m_pos;
  26. };
  27. class SeekableHoleStream
  28. {
  29. public:
  30. explicit SeekableHoleStream(stream_position_t size)
  31. {
  32. m_pos  = 0;
  33. m_size = size;
  34. }
  35. private:
  36. stream_position_t m_pos;
  37. stream_position_t m_size;
  38. };
  39. } // namespace febird
  40. #endif