summaryrefslogtreecommitdiff
path: root/databuffer.cpp
diff options
context:
space:
mode:
authorRusty Wagner <rusty@vector35.com>2015-02-12 14:34:50 -0500
committerRusty Wagner <rusty@vector35.com>2015-02-12 14:34:50 -0500
commit83b01dd50407731d14938ac96894c3a4d9065295 (patch)
tree2e3ded7103b51aef0d5cd22434e35f4461aeaeba /databuffer.cpp
parent6b431b32e32f00f9203ba2a4ca07cc962cdb22aa (diff)
Place API code with the associated class
Diffstat (limited to 'databuffer.cpp')
-rw-r--r--databuffer.cpp103
1 files changed, 103 insertions, 0 deletions
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];
+}