Buffer.h 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. //
  2. // "$Id$"
  3. //
  4. // Copyright (c)1992-2011, ZheJiang Dahua Technology Stock CO.LTD.
  5. // All Rights Reserved.
  6. //
  7. // Description:
  8. // Revisions: Year-Month-Day SVN-Author Modification
  9. //
  10. #ifndef __DAHUA_MEMORY_BUFFER_H__
  11. #define __DAHUA_MEMORY_BUFFER_H__
  12. #include <stddef.h> // for size_t
  13. #include "Infra/Defs.h"
  14. #include "Defs.h"
  15. namespace Dahua {
  16. namespace Memory {
  17. /// 可动态增长的数据缓存类
  18. class MEMORY_API CBuffer
  19. {
  20. /// 禁止复制构造和赋值操作
  21. CBuffer(CBuffer const&);
  22. CBuffer& operator=(CBuffer const&);
  23. public:
  24. /// 构造函数
  25. CBuffer();
  26. /// 析构函数
  27. ~CBuffer();
  28. /// 追加数据, 如果原缓存容量不够, 会造成内存重新分配以及内存复制操作
  29. /// \param buffer 追加的数据指针
  30. /// \param length 追加的数据长度
  31. /// \return 实际写入的数据
  32. size_t putBuffer(uint8_t* buffer, size_t length);
  33. /// 取数据地址
  34. uint8_t* getBuffer() const;
  35. /// 取有效数据长度
  36. size_t size() const;
  37. /// 设置有效数据长度, 如果原缓存容量不够, 会造成内存重新分配以及内存复制操作
  38. /// \param size 新的有效数据长度
  39. void resize(size_t size);
  40. /// 取缓存容量
  41. size_t capacity() const;
  42. /// 预分配缓存容量, 如果原缓存容量不够, 会造成内存重新分配以及内存复制操作
  43. /// \param capacity 新的缓存容量
  44. void reserve(size_t capacity);
  45. /// 释放缓存,重置为构造时的初始状态
  46. void reset();
  47. /// 设置每次动态增长的大小
  48. void setIncreasedSize(size_t increase);
  49. private:
  50. struct BufferInternal;
  51. BufferInternal* m_internal;
  52. };
  53. } // namespace Memory
  54. } // namespace Dahua
  55. #endif // __DAHUA_MEMORY_BUFFER_H__