From 83b01dd50407731d14938ac96894c3a4d9065295 Mon Sep 17 00:00:00 2001 From: Rusty Wagner Date: Thu, 12 Feb 2015 14:34:50 -0500 Subject: Place API code with the associated class --- databuffer.cpp | 103 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 103 insertions(+) create mode 100644 databuffer.cpp (limited to 'databuffer.cpp') diff --git a/databuffer.cpp b/databuffer.cpp new file mode 100644 index 00000000..dcc94f90 --- /dev/null +++ b/databuffer.cpp @@ -0,0 +1,103 @@ +#include "binaryninjaapi.h" + +using namespace BinaryNinja; +using namespace std; + + +DataBuffer::DataBuffer() +{ + m_buffer = BNCreateDataBuffer(nullptr, 0); +} + + +DataBuffer::DataBuffer(size_t len) +{ + m_buffer = BNCreateDataBuffer(nullptr, len); +} + + +DataBuffer::DataBuffer(const DataBuffer& buf) +{ + m_buffer = BNDuplicateDataBuffer(buf.m_buffer); +} + + +DataBuffer::DataBuffer(BNDataBuffer* buf) +{ + m_buffer = buf; +} + + +DataBuffer::~DataBuffer() +{ + BNFreeDataBuffer(m_buffer); +} + + +DataBuffer& DataBuffer::operator=(const DataBuffer& buf) +{ + BNFreeDataBuffer(m_buffer); + m_buffer = BNDuplicateDataBuffer(buf.m_buffer); + return *this; +} + + +void* DataBuffer::GetData() +{ + return BNGetDataBufferContents(m_buffer); +} + + +const void* DataBuffer::GetData() const +{ + return BNGetDataBufferContents(m_buffer); +} + + +void* DataBuffer::GetDataAt(size_t offset) +{ + return BNGetDataBufferContentsAt(m_buffer, offset); +} + + +size_t DataBuffer::GetLength() const +{ + return BNGetDataBufferLength(m_buffer); +} + + +void DataBuffer::SetSize(size_t len) +{ + BNSetDataBufferLength(m_buffer, len); +} + + +void DataBuffer::Append(const void* data, size_t len) +{ + BNAppendDataBufferContents(m_buffer, data, len); +} + + +void DataBuffer::Append(const DataBuffer& buf) +{ + BNAppendDataBuffer(m_buffer, buf.m_buffer); +} + + +DataBuffer DataBuffer::GetSlice(size_t start, size_t len) +{ + BNDataBuffer* result = BNGetDataBufferSlice(m_buffer, start, len); + return DataBuffer(result); +} + + +uint8_t& DataBuffer::operator[](size_t offset) +{ + return ((uint8_t*)GetData())[offset]; +} + + +const uint8_t& DataBuffer::operator[](size_t offset) const +{ + return ((const uint8_t*)GetData())[offset]; +} -- cgit v1.3.1