8#include "Arp/System/Commons/Io/Stream.hpp"
9#include "Arp/System/Commons/Exceptions/Exceptions.h"
13namespace Arp {
namespace System {
namespace Commons {
namespace Io
35 MemoryStream(
byte* buffer,
size_t bufferSize,
boolean writable);
43 MemoryStream(
byte* buffer,
size_t bufferSize,
size_t index,
size_t count);
52 MemoryStream(
byte* buffer,
size_t bufferSize,
size_t index,
size_t count,
boolean writable);
62 MemoryStream(
byte* buffer,
size_t bufferSize,
size_t index,
size_t count,
boolean writable,
boolean publiclyVisible);
75 boolean CanRead(
void)
override;
76 boolean CanWrite(
void)
override;
77 boolean CanSeek(
void)
override;
78 size_t GetLength(
void)
override;
79 void SetLength(
size_t argLength)
override;
80 size_t GetPosition(
void)
override;
81 void SetPosition(
size_t argPostion)
override;
83 virtual size_t GetCapacity(
void);
84 virtual void SetCapacity(
size_t argCapacity);
87 void Flush(
void)
override;
88 size_t Seek(
size_t offset,
SeekOrigin origin)
override;
89 size_t Read(
byte* pBuffer,
size_t bufferSize,
size_t offset,
size_t count)
override;
90 std::vector<byte> ToArray(
void);
91 void Write(
const byte* pBuffer,
size_t bufferSize,
size_t offset,
size_t count)
override;
93 virtual void WriteTo(
Stream& stream);
96 void InternalDispose(
void)
override;
101 void InternalConstructor(
byte* buffer,
size_t bufferSize,
size_t index,
size_t count,
boolean writable,
boolean publicallyVisible);
102 void EnsureSize(
size_t newSize);
107 size_t streamBufferSize;
121 boolean allowGetBuffer;
126 static size_t minCapacity;
137 : streamBuffer(nullptr), writeable(true), position(0), length(0), expandable(false), capacity(capacity), bufferOffset(0), allowGetBuffer(true), selfCreated(true)
144 this->streamBuffer =
new byte[capacity];
145 this->streamBufferSize = capacity;
146 memset(this->streamBuffer, 0, capacity);
150 : streamBuffer(nullptr), writeable(true), position(0), length(0), expandable(false), capacity(0), bufferOffset(0), allowGetBuffer(true), selfCreated(false)
152 if (buffer ==
nullptr)
157 this->InternalConstructor(buffer, bufferSize, 0, bufferSize,
true,
false);
161 : streamBuffer(nullptr), writeable(true), position(0), length(0), expandable(false), capacity(0), bufferOffset(0), allowGetBuffer(true), selfCreated(false)
163 if (buffer ==
nullptr)
168 this->InternalConstructor(buffer, bufferSize, 0,
sizeof(buffer), writable,
false);
172 : streamBuffer(nullptr), writeable(true), position(0), length(0), expandable(false), capacity(0), bufferOffset(0), allowGetBuffer(true), selfCreated(false)
174 if (buffer ==
nullptr)
179 this->InternalConstructor(buffer, bufferSize, index, count,
true,
false);
183 : streamBuffer(nullptr), writeable(true), position(0), length(0), expandable(false), capacity(0), bufferOffset(0), allowGetBuffer(true), selfCreated(false)
185 this->InternalConstructor(buffer, bufferSize, index, count, writable,
false);
189 : streamBuffer(nullptr), writeable(true), position(0), length(0), expandable(false), capacity(0), bufferOffset(0), allowGetBuffer(true), selfCreated(false)
191 if (buffer ==
nullptr)
196 this->InternalConstructor(buffer, bufferSize, index, count, writable, publiclyVisible);
This exception is used when an invalid argument occurs.
Definition: ArgumentException.hpp:15
This exception is used when an invalid <null> argument occurs.
Definition: ArgumentNullException.hpp:16
Definition: MemoryStream.hpp:17
MemoryStream(const MemoryStream &arg)=delete
Copy constructor.
virtual ~MemoryStream(void)
Destructs this instance and frees all resources.
Definition: MemoryStream.hpp:199
MemoryStream(void)
Initializes a new instance of the T:System.IO.MemoryStream class with an expandable capacity initiali...
Definition: MemoryStream.hpp:131
MemoryStream & operator=(const MemoryStream &arg)=delete
Assignment operator.
Provides a generic view of a sequence of bytes.
Definition: Stream.hpp:20
@ System
System components used by the System, Device, Plc or Io domains.
SeekOrigin
Provides seek reference points. To seek to the end of a stream, call stream.Seek(0,...
Definition: SeekOrigin.hpp:20
Root namespace for the PLCnext API