InMemoryBuffer.h 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. #pragma once
  2. #include "Reader.h"
  3. #include "Writer.h"
  4. #include "ReferenceCounter.h"
  5. namespace Framework
  6. {
  7. class InMemoryBuffer : public Reader, public Writer, public virtual ReferenceCounter
  8. {
  9. private:
  10. char **buffer;
  11. int readPos;
  12. int writePos;
  13. int numBuffers;
  14. int maxWritePos;
  15. public:
  16. DLLEXPORT InMemoryBuffer();
  17. DLLEXPORT ~InMemoryBuffer();
  18. //! Ließt aus der Datei
  19. //! \param bytes Ein Array, der mit Bytes aus der Resource gefüllt werden soll
  20. //! \param len Wie viele Bytes aus der Resource gelesen werden sollen
  21. DLLEXPORT void lese( char *bytes, int len ) override;
  22. //! Schreibt in die Resource
  23. //! \param bytes Ein Array, der die Bytes enthält, welche in die Resource geschrieben werden soll
  24. //! \param len Wie viele Bytes in die Resource geschrieben werden sollen
  25. DLLEXPORT void schreibe( const char *bytes, int len ) override;
  26. //! Ließt die nächste zeile der Resource ein
  27. //! \return Die gelesene Zeile als Text mit zeilenumbruch
  28. DLLEXPORT Text *leseZeile() override;
  29. //! Prüft, ob die Resource vollständig gelesen wurde
  30. //! return 1, wenn die Resource vollständig gelesen wurde. 0, sonst
  31. DLLEXPORT bool istEnde() const override;
  32. //! Setzt die Position des Bytes, das als nächstes gelesen werden soll
  33. //! \param pos Der Index des Bytes
  34. //! \param ende 1, wenn der Index vom ende der Resource zählt. 0, wenn der Index vom Beginn der Resource zählt
  35. DLLEXPORT void setLPosition( __int64 pos, bool ende ) override;
  36. //! Setzt die Position des Bytes, das als nächstes geschrieben werden soll
  37. //! \param pos Der Index des Bytes
  38. //! \param ende 1, wenn der Index vom ende der Resource zählt. 0, wenn der Index vom Beginn der Resource zählt
  39. DLLEXPORT void setSPosition( __int64 pos, bool ende ) override;
  40. //! Gibt den Index des Bytes aus der Resource zurück, welches als nächstes gelesen werden würde
  41. //! return -1, falls ein Fehler aufgetreten ist. Sonst die Position des Lesezeigers
  42. DLLEXPORT __int64 getLPosition() const override;
  43. //! Gibt den Index des Bytes aus der Resource zurück, welches als nächstes geschrieben werden würde
  44. //! return -1, falls ein Fehler aufgetreten ist. Sonst die Position des Schreibzeigers
  45. DLLEXPORT __int64 getSPosition() const override;
  46. //! Gibt die Anzahl der zu lesenden Bytes zurück
  47. DLLEXPORT __int64 getSize() const override;
  48. };
  49. }