#pragma once #include "Reader.h" #include "Writer.h" #include "ReferenceCounter.h" namespace Framework { class InMemoryBuffer : public Reader, public Writer, public virtual ReferenceCounter { private: char **buffer; int readPos; int writePos; int numBuffers; int maxWritePos; public: DLLEXPORT InMemoryBuffer(); DLLEXPORT ~InMemoryBuffer(); //! Ließt aus der Datei //! \param bytes Ein Array, der mit Bytes aus der Resource gefüllt werden soll //! \param len Wie viele Bytes aus der Resource gelesen werden sollen DLLEXPORT void lese( char *bytes, int len ) override; //! Schreibt in die Resource //! \param bytes Ein Array, der die Bytes enthält, welche in die Resource geschrieben werden soll //! \param len Wie viele Bytes in die Resource geschrieben werden sollen DLLEXPORT void schreibe( const char *bytes, int len ) override; //! Ließt die nächste zeile der Resource ein //! \return Die gelesene Zeile als Text mit zeilenumbruch DLLEXPORT Text *leseZeile() override; //! Prüft, ob die Resource vollständig gelesen wurde //! return 1, wenn die Resource vollständig gelesen wurde. 0, sonst DLLEXPORT bool istEnde() const override; //! Setzt die Position des Bytes, das als nächstes gelesen werden soll //! \param pos Der Index des Bytes //! \param ende 1, wenn der Index vom ende der Resource zählt. 0, wenn der Index vom Beginn der Resource zählt DLLEXPORT void setLPosition( __int64 pos, bool ende ) override; //! Setzt die Position des Bytes, das als nächstes geschrieben werden soll //! \param pos Der Index des Bytes //! \param ende 1, wenn der Index vom ende der Resource zählt. 0, wenn der Index vom Beginn der Resource zählt DLLEXPORT void setSPosition( __int64 pos, bool ende ) override; //! Gibt den Index des Bytes aus der Resource zurück, welches als nächstes gelesen werden würde //! return -1, falls ein Fehler aufgetreten ist. Sonst die Position des Lesezeigers DLLEXPORT __int64 getLPosition() const override; //! Gibt den Index des Bytes aus der Resource zurück, welches als nächstes geschrieben werden würde //! return -1, falls ein Fehler aufgetreten ist. Sonst die Position des Schreibzeigers DLLEXPORT __int64 getSPosition() const override; //! Gibt die Anzahl der zu lesenden Bytes zurück DLLEXPORT __int64 getSize() const override; }; }