|
@@ -1,37 +1,72 @@
|
|
#pragma once
|
|
#pragma once
|
|
|
|
|
|
-#include "Betriebssystem.h"
|
|
|
|
|
|
+#include "ReferenceCounter.h"
|
|
|
|
|
|
namespace Framework
|
|
namespace Framework
|
|
{
|
|
{
|
|
- class Text;
|
|
|
|
|
|
+ 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 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 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;
|
|
|
|
+ };
|
|
}
|
|
}
|