gmStreamBuffer.h 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. /*
  2. _____ __ ___ __ ____ _ __
  3. / ___/__ ___ _ ___ / |/ /__ ___ / /_____ __ __/ __/_______(_)__ / /_
  4. / (_ / _ `/ ' \/ -_) /|_/ / _ \/ _ \/ '_/ -_) // /\ \/ __/ __/ / _ \/ __/
  5. \___/\_,_/_/_/_/\__/_/ /_/\___/_//_/_/\_\\__/\_, /___/\__/_/ /_/ .__/\__/
  6. /___/ /_/
  7. See Copyright Notice in gmMachine.h
  8. */
  9. #ifndef _GMSTREAMMEM_H_
  10. #define _GMSTREAMMEM_H_
  11. #include "gmConfig.h"
  12. #include "gmStream.h"
  13. #include "gmArraySimple.h"
  14. /// \class gmStreamBufferStatic
  15. /// \brief gmStreamBufferStatic is a read only stream constructed from a const void *
  16. class gmStreamBufferStatic : public gmStream
  17. {
  18. public:
  19. gmStreamBufferStatic();
  20. gmStreamBufferStatic(const void * a_buffer, unsigned int a_size);
  21. virtual ~gmStreamBufferStatic();
  22. virtual unsigned int Seek(unsigned int p_pos);
  23. virtual unsigned int Tell() const;
  24. virtual unsigned int GetSize() const;
  25. virtual unsigned int Read(void * p_buffer, unsigned int p_n);
  26. virtual unsigned int Write(const void * p_buffer, unsigned int p_n);
  27. void Open(const void * a_buffer, unsigned int a_size);
  28. inline const char* GetData() const { return m_stream; }
  29. private:
  30. unsigned int m_cursor;
  31. unsigned int m_size;
  32. const char * m_stream;
  33. };
  34. /// \class gmStreamBufferDynamic
  35. /// \brief gmStreamBufferDynamic is a read\write memory stream
  36. class gmStreamBufferDynamic : public gmStream
  37. {
  38. public:
  39. gmStreamBufferDynamic();
  40. virtual ~gmStreamBufferDynamic();
  41. virtual unsigned int Seek(unsigned int p_pos);
  42. virtual unsigned int Tell() const;
  43. virtual unsigned int GetSize() const;
  44. virtual unsigned int Read(void * p_buffer, unsigned int p_n);
  45. virtual unsigned int Write(const void * p_buffer, unsigned int p_n);
  46. void Reset() ;
  47. void ResetAndFreeMemory();
  48. inline void SetBlockSize(unsigned int a_blockSize) { m_stream.SetBlockSize(a_blockSize); }
  49. inline const char* GetData() const { return m_stream.GetData(); }
  50. inline char* GetUnsafeData() { return m_stream.GetData(); }
  51. void SetSize(unsigned int a_size) { m_stream.SetCount(a_size); }
  52. void SetCursor(unsigned int a_cursor) { m_cursor = a_cursor; }
  53. private:
  54. unsigned int m_cursor;
  55. gmArraySimple<char> m_stream;
  56. };
  57. #endif // _GMSTREAMMEM_H_