mirror of
https://github.com/BeneficialCode/WinArk
synced 2026-08-09 12:00:31 +00:00
57 lines
1.3 KiB
C++
57 lines
1.3 KiB
C++
#include "stdafx.h"
|
|
#include "MemoryBuffer.h"
|
|
|
|
MemoryBuffer::MemoryBuffer(uint32_t initialSize) :_buffer(initialSize) {
|
|
}
|
|
|
|
MemoryBuffer::MemoryBuffer(const uint8_t* data, uint32_t size) {
|
|
Init(data, size);
|
|
}
|
|
|
|
void MemoryBuffer::Init(const uint8_t* data, uint32_t size) {
|
|
_buffer.resize(size);
|
|
::memcpy(_buffer.data(), data, size);
|
|
}
|
|
|
|
uint32_t MemoryBuffer::GetData(int64_t offset, uint8_t* buffer, uint32_t count) {
|
|
if (offset >= GetSize())
|
|
return 0;
|
|
if (count + offset > GetSize())
|
|
count = uint32_t(GetSize() - offset);
|
|
::memcpy(buffer, _buffer.data() + offset, count);
|
|
return count;
|
|
}
|
|
|
|
bool MemoryBuffer::Insert(int64_t offset, const uint8_t* data, uint32_t count) {
|
|
_buffer.insert(_buffer.begin() + offset, data, data + count);
|
|
return true;
|
|
}
|
|
|
|
bool MemoryBuffer::Delete(int64_t offset, size_t count) {
|
|
_buffer.erase(_buffer.begin() + offset, _buffer.begin() + offset + count);
|
|
return true;
|
|
}
|
|
|
|
bool MemoryBuffer::SetData(int64_t offset, const uint8_t* data, uint32_t count) {
|
|
::memcpy(_buffer.data() + offset, data, count);
|
|
return true;
|
|
}
|
|
|
|
int64_t MemoryBuffer::GetSize() const {
|
|
return _buffer.size();
|
|
}
|
|
|
|
uint8_t* MemoryBuffer::GetRawData(int64_t offset) {
|
|
return _buffer.data() + offset;
|
|
}
|
|
|
|
bool MemoryBuffer::IsReadOnly() const {
|
|
return false;
|
|
}
|
|
|
|
bool MemoryBuffer::Increase(uint32_t size) {
|
|
_buffer.resize(_buffer.size() + size);
|
|
return true;
|
|
}
|
|
|