InMemoryBuffer.h 2.7 KB

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