| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- #pragma once
- #include "ReferenceCounter.h"
- namespace Framework
- {
- class Text;
- class StreamReader
- {
- public:
- //! Reads from the resource
- //! \param bytes An array to be filled with bytes from the resource
- //! \param len How many bytes should be read from the resource
- virtual void lese(char* bytes, int len) = 0;
- //! Reads the next line of the resource
- //! \return The read line as Text with line break
- virtual Text* leseZeile() = 0;
- //! Checks whether the resource has been fully read
- //! return 1 if the resource has been fully read. 0 otherwise
- virtual bool istEnde() const = 0;
- };
- class Reader : public StreamReader
- {
- public:
- //! Sets the position of the byte to be read next
- //! \param pos The index of the byte
- //! \param ende 1 if the index counts from the end of the resource. 0 if
- //! the index counts from the beginning of the resource
- virtual void setLPosition(__int64 pos, bool ende) = 0;
- //! Returns the index of the byte from the resource that would be read next
- //! return -1 if an error occurred. Otherwise the position of the read pointer
- virtual __int64 getLPosition() const = 0;
- //! Returns the number of bytes to be read
- virtual __int64 getSize() const = 0;
- };
- class ByteArrayReader : public Reader,
- public ReferenceCounter
- {
- private:
- int length;
- const char* buffer;
- bool deleteBuffer;
- int position;
- public:
- //! \param buffer The buffer to be read
- //! \param length The length of the buffer
- //! \param deleteBuffer true if the buffer should be automatically deleted
- //! with delete[]
- DLLEXPORT ByteArrayReader(
- const char* buffer, int length, bool deleteBuffer);
- DLLEXPORT ~ByteArrayReader();
- //! Reads from the resource
- //! \param bytes An array to be filled with bytes from the resource
- //! \param len How many bytes should be read from the resource
- DLLEXPORT void lese(char* bytes, int len) override;
- //! Reads the next line of the resource
- //! \return The read line as Text with line break
- DLLEXPORT Text* leseZeile() override;
- //! Checks whether the resource has been fully read
- //! return 1 if the resource has been fully read. 0 otherwise
- DLLEXPORT bool istEnde() const override;
- //! Sets the position of the byte to be read next
- //! \param pos The index of the byte
- //! \param ende 1 if the index counts from the end of the resource. 0 if
- //! the index counts from the beginning of the resource
- DLLEXPORT void setLPosition(__int64 pos, bool ende) override;
- //! Returns the index of the byte from the resource that would be read next
- //! return -1 if an error occurred. Otherwise the position of the read pointer
- DLLEXPORT __int64 getLPosition() const override;
- //! Returns the number of bytes to be read
- DLLEXPORT __int64 getSize() const override;
- };
- } // namespace Framework
|