Веб-сайт самохостера Lotigara

summaryrefslogtreecommitdiff
path: root/source/core/StarDataStreamDevices.cpp
diff options
context:
space:
mode:
authorKae <80987908+Novaenia@users.noreply.github.com>2023-06-20 14:33:09 +1000
committerKae <80987908+Novaenia@users.noreply.github.com>2023-06-20 14:33:09 +1000
commit6352e8e3196f78388b6c771073f9e03eaa612673 (patch)
treee23772f79a7fbc41bc9108951e9e136857484bf4 /source/core/StarDataStreamDevices.cpp
parent6741a057e5639280d85d0f88ba26f000baa58f61 (diff)
everything everywhere
all at once
Diffstat (limited to 'source/core/StarDataStreamDevices.cpp')
-rw-r--r--source/core/StarDataStreamDevices.cpp167
1 files changed, 167 insertions, 0 deletions
diff --git a/source/core/StarDataStreamDevices.cpp b/source/core/StarDataStreamDevices.cpp
new file mode 100644
index 0000000..0c37d8d
--- /dev/null
+++ b/source/core/StarDataStreamDevices.cpp
@@ -0,0 +1,167 @@
+#include "StarDataStreamDevices.hpp"
+
+namespace Star {
+
+DataStreamFunctions::DataStreamFunctions(function<size_t(char*, size_t)> reader, function<size_t(char const*, size_t)> writer)
+ : m_reader(move(reader)), m_writer(move(writer)) {}
+
+void DataStreamFunctions::readData(char* data, size_t len) {
+ if (!m_reader)
+ throw DataStreamException("DataStreamFunctions no read function given");
+ m_reader(data, len);
+}
+
+void DataStreamFunctions::writeData(char const* data, size_t len) {
+ if (!m_writer)
+ throw DataStreamException("DataStreamFunctions no write function given");
+ m_writer(data, len);
+}
+
+DataStreamIODevice::DataStreamIODevice(IODevicePtr device)
+ : m_device(move(device)) {}
+
+IODevicePtr const& DataStreamIODevice::device() const {
+ return m_device;
+}
+
+void DataStreamIODevice::seek(size_t pos, IOSeek mode) {
+ m_device->seek(pos, mode);
+}
+
+bool DataStreamIODevice::atEnd() {
+ return m_device->atEnd();
+}
+
+StreamOffset DataStreamIODevice::pos() {
+ return m_device->pos();
+}
+
+void DataStreamIODevice::readData(char* data, size_t len) {
+ return m_device->readFull(data, len);
+}
+
+void DataStreamIODevice::writeData(char const* data, size_t len) {
+ return m_device->writeFull(data, len);
+}
+
+DataStreamBuffer::DataStreamBuffer() {
+ m_buffer = make_shared<Buffer>();
+}
+
+DataStreamBuffer::DataStreamBuffer(size_t s)
+ : DataStreamBuffer() {
+ reset(s);
+}
+
+DataStreamBuffer::DataStreamBuffer(ByteArray b)
+ : DataStreamBuffer() {
+ reset(std::move(b));
+}
+
+void DataStreamBuffer::resize(size_t size) {
+ m_buffer->resize(size);
+}
+
+void DataStreamBuffer::reserve(size_t size) {
+ m_buffer->reserve(size);
+}
+
+void DataStreamBuffer::clear() {
+ m_buffer->clear();
+}
+
+BufferPtr const& DataStreamBuffer::device() const {
+ return m_buffer;
+}
+
+ByteArray& DataStreamBuffer::data() {
+ return m_buffer->data();
+}
+
+ByteArray const& DataStreamBuffer::data() const {
+ return m_buffer->data();
+}
+
+ByteArray DataStreamBuffer::takeData() {
+ return m_buffer->takeData();
+}
+
+char* DataStreamBuffer::ptr() {
+ return m_buffer->ptr();
+}
+
+const char* DataStreamBuffer::ptr() const {
+ return m_buffer->ptr();
+}
+
+size_t DataStreamBuffer::size() const {
+ return m_buffer->dataSize();
+}
+
+bool DataStreamBuffer::empty() const {
+ return m_buffer->empty();
+}
+
+void DataStreamBuffer::seek(size_t pos, IOSeek mode) {
+ m_buffer->seek(pos, mode);
+}
+
+bool DataStreamBuffer::atEnd() {
+ return m_buffer->atEnd();
+}
+
+size_t DataStreamBuffer::pos() {
+ return (size_t)m_buffer->pos();
+}
+
+void DataStreamBuffer::reset(size_t newSize) {
+ m_buffer->reset(newSize);
+}
+
+void DataStreamBuffer::reset(ByteArray b) {
+ m_buffer->reset(move(b));
+}
+
+void DataStreamBuffer::readData(char* data, size_t len) {
+ m_buffer->readFull(data, len);
+}
+
+void DataStreamBuffer::writeData(char const* data, size_t len) {
+ m_buffer->writeFull(data, len);
+}
+
+DataStreamExternalBuffer::DataStreamExternalBuffer() {}
+
+DataStreamExternalBuffer::DataStreamExternalBuffer(char const* externalData, size_t len) : DataStreamExternalBuffer() {
+ reset(externalData, len);
+}
+
+char const* DataStreamExternalBuffer::ptr() const {
+ return m_buffer.ptr();
+}
+
+size_t DataStreamExternalBuffer::size() const {
+ return m_buffer.dataSize();
+}
+
+bool DataStreamExternalBuffer::empty() const {
+ return m_buffer.empty();
+}
+
+void DataStreamExternalBuffer::seek(size_t pos, IOSeek mode) {
+ m_buffer.seek(pos, mode);
+}
+
+bool DataStreamExternalBuffer::atEnd() {
+ return m_buffer.atEnd();
+}
+
+size_t DataStreamExternalBuffer::pos() {
+ return m_buffer.pos();
+}
+
+void DataStreamExternalBuffer::reset(char const* externalData, size_t len) {
+ m_buffer.reset(externalData, len);
+}
+
+}