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

STL

开发平台:

Visual C++

  1. /* vim: set tabstop=4 : */
  2. #ifndef __febird_io_BzipStream_h__
  3. #define __febird_io_BzipStream_h__
  4. #if defined(_MSC_VER) && (_MSC_VER >= 1020)
  5. # pragma once
  6. #endif
  7. #include <stdio.h>
  8. #include "../stdtypes.h"
  9. #include "../refcount.h"
  10. #include "IOException.h"
  11. #include "IStream.h"
  12. namespace febird {
  13. class FEBIRD_DLL_EXPORT BzipInputStream : public RefCounter, public IInputStream
  14. {
  15. DECLARE_NONE_COPYABLE_CLASS(BzipInputStream)
  16. void* m_fp;
  17. FILE* m_cf;
  18. public:
  19. explicit BzipInputStream(const char* fpath, const char* mode = "rb");
  20. explicit BzipInputStream(int fd, const char* mode = "rb");
  21. BzipInputStream() : m_fp(0), m_cf(0) {}
  22. ~BzipInputStream();
  23. void open(const char* fpath, const char* mode = "rb");
  24. void dopen(int fd, const char* mode = "rb");
  25. void close();
  26. bool isOpen() const { return 0 != m_fp; }
  27. bool eof() const;
  28. void ensureRead(void* vbuf, size_t length);
  29. size_t read(void* buf, size_t size);
  30. };
  31. class FEBIRD_DLL_EXPORT BzipOutputStream : public RefCounter, public IOutputStream
  32. {
  33. DECLARE_NONE_COPYABLE_CLASS(BzipOutputStream)
  34. void* m_fp;
  35. FILE* m_cf;
  36. public:
  37. explicit BzipOutputStream(const char* fpath, const char* mode = "wb");
  38. explicit BzipOutputStream(int fd, const char* mode = "wb");
  39. BzipOutputStream() : m_fp(0), m_cf(0) {}
  40. ~BzipOutputStream();
  41. void close();
  42. void open(const char* fpath, const char* mode = "wb");
  43. void dopen(int fd, const char* mode = "wb");
  44. bool isOpen() const { return 0 != m_fp; }
  45. void ensureWrite(const void* vbuf, size_t length);
  46. size_t write(const void* buf, size_t size);
  47. void flush();
  48. };
  49. } // namespace febird
  50. #endif