8 #include "Arp/System/Commons/Io/Stream.hpp" 9 #include "Arp/System/Commons/Exceptions/Exceptions.h" 12 namespace Arp {
namespace System {
namespace Commons {
namespace Io
51 MemoryStream(
byte* buffer,
size_t bufferSize,
size_t index,
size_t count,
boolean writable);
61 MemoryStream(
byte* buffer,
size_t bufferSize,
size_t index,
size_t count,
boolean writable,
boolean publiclyVisible);
74 boolean CanRead(
void)
override;
75 boolean CanWrite(
void)
override;
76 boolean CanSeek(
void)
override;
77 size_t GetLength(
void)
override;
78 void SetLength(
size_t argLength)
override;
79 size_t GetPosition(
void)
override;
80 void SetPosition(
size_t argPostion)
override;
82 virtual size_t GetCapacity(
void);
83 virtual void SetCapacity(
size_t argCapacity);
86 void Flush(
void)
override;
87 size_t Seek(
size_t offset,
SeekOrigin origin)
override;
88 size_t Read(
byte* pBuffer,
size_t bufferSize,
size_t offset,
size_t count)
override;
89 std::vector<byte> ToArray(
void);
90 void Write(
const byte* pBuffer,
size_t bufferSize,
size_t offset,
size_t count)
override;
92 virtual void WriteTo(
Stream& stream);
95 void InternalDispose(
void)
override;
100 void InternalConstructor(
byte* buffer,
size_t bufferSize,
size_t index,
size_t count,
boolean writable,
boolean publicallyVisible);
101 void EnsureSize(
size_t newSize);
106 size_t streamBufferSize;
120 boolean allowGetBuffer;
125 static size_t minCapacity;
136 : streamBuffer(nullptr), writeable(true), position(0), length(0), expandable(false), capacity(capacity), bufferOffset(0), allowGetBuffer(true), selfCreated(true)
143 this->streamBuffer =
new byte[capacity];
144 this->streamBufferSize = capacity;
145 memset(this->streamBuffer, 0, capacity);
149 : streamBuffer(nullptr), writeable(true), position(0), length(0), expandable(false), capacity(0), bufferOffset(0), allowGetBuffer(true), selfCreated(false)
151 if (buffer ==
nullptr)
156 this->InternalConstructor(buffer, bufferSize, 0, bufferSize,
true,
false);
160 : streamBuffer(nullptr), writeable(true), position(0), length(0), expandable(false), capacity(0), bufferOffset(0), allowGetBuffer(true), selfCreated(false)
162 if (buffer ==
nullptr)
167 this->InternalConstructor(buffer, bufferSize, 0,
sizeof(buffer), writable,
false);
171 : streamBuffer(nullptr), writeable(true), position(0), length(0), expandable(false), capacity(0), bufferOffset(0), allowGetBuffer(true), selfCreated(false)
173 if (buffer ==
nullptr)
178 this->InternalConstructor(buffer, bufferSize, index, count,
true,
false);
182 : streamBuffer(nullptr), writeable(true), position(0), length(0), expandable(false), capacity(0), bufferOffset(0), allowGetBuffer(true), selfCreated(false)
184 this->InternalConstructor(buffer, bufferSize, index, count, writable,
false);
188 : streamBuffer(nullptr), writeable(true), position(0), length(0), expandable(false), capacity(0), bufferOffset(0), allowGetBuffer(true), selfCreated(false)
190 if (buffer ==
nullptr)
195 this->InternalConstructor(buffer, bufferSize, index, count, writable, publiclyVisible);
Definition: MemoryStream.hpp:15
virtual ~MemoryStream(void)
Destructs this instance and frees all resources.
Definition: MemoryStream.hpp:198
MemoryStream(void)
Initializes a new instance of the T:System.IO.MemoryStream class with an expandable capacity initiali...
Definition: MemoryStream.hpp:130
This exception is used when an invalid <null> argument occurs.
Definition: ArgumentNullException.hpp:15
Provides a generic view of a sequence of bytes.
Definition: Stream.hpp:19
MemoryStream & operator=(const MemoryStream &arg)=delete
Assignment operator.
This exception is used when an invalid argument occurs.
Definition: ArgumentException.hpp:14
Root namespace for the PLCnext API
SeekOrigin
Provides seek reference points. To seek to the end of a stream, call stream.Seek(0, SeekOrigin.End).
Definition: SeekOrigin.hpp:19
System components used by the System, Device, Plc or Io domains.
unsigned char byte
The Arp character type.
Definition: PrimitiveTypes.hpp:23