123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- #pragma once
- #include "ReferenceCounter.h"
- namespace Framework
- {
- class Text;
- class StreamReader
- {
- public:
- //! 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
- virtual void lese(char* bytes, int len) = 0;
- //! Ließt die nächste zeile der Resource ein
- //! \return Die gelesene Zeile als Text mit zeilenumbruch
- virtual Text* leseZeile() = 0;
- //! Prüft, ob die Resource vollständig gelesen wurde
- //! return 1, wenn die Resource vollständig gelesen wurde. 0, sonst
- virtual bool istEnde() const = 0;
- };
- class Reader : public StreamReader
- {
- public:
- //! 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
- virtual void setLPosition(__int64 pos, bool ende) = 0;
- //! 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
- virtual __int64 getLPosition() const = 0;
- //! Gibt die Anzahl der zu lesenden Bytes zurück
- virtual __int64 getSize() const = 0;
- };
- class ByteArrayReader : public Reader, public ReferenceCounter
- {
- private:
- int length;
- const char* buffer;
- bool deleteBuffer;
- int position;
- public:
- //! \param buffer der Buffer der gelesen werden soll
- //! \param length Die länge des buffers
- //! \param deleteBuffer true, wenn der buffer automatisch mit delete[] gelöscht werden soll
- DLLEXPORT ByteArrayReader(const char* buffer, int length, bool deleteBuffer);
- DLLEXPORT ~ByteArrayReader();
- //! 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;
- //! 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;
- //! 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 die Anzahl der zu lesenden Bytes zurück
- DLLEXPORT __int64 getSize() const override;
- };
- }
|