summaryrefslogtreecommitdiff
path: root/fileaccessor.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 /fileaccessor.cpp
parent6b431b32e32f00f9203ba2a4ca07cc962cdb22aa (diff)
Place API code with the associated class
Diffstat (limited to 'fileaccessor.cpp')
-rw-r--r--fileaccessor.cpp63
1 files changed, 63 insertions, 0 deletions
diff --git a/fileaccessor.cpp b/fileaccessor.cpp
new file mode 100644
index 00000000..4a90d8dc
--- /dev/null
+++ b/fileaccessor.cpp
@@ -0,0 +1,63 @@
+#include "binaryninjaapi.h"
+
+using namespace BinaryNinja;
+using namespace std;
+
+
+uint64_t FileAccessor::GetLengthCallback(void* ctxt)
+{
+ FileAccessor* file = (FileAccessor*)ctxt;
+ return file->GetLength();
+}
+
+
+size_t FileAccessor::ReadCallback(void* ctxt, void* dest, uint64_t offset, size_t len)
+{
+ FileAccessor* file = (FileAccessor*)ctxt;
+ return file->Read(dest, offset, len);
+}
+
+
+size_t FileAccessor::WriteCallback(void* ctxt, uint64_t offset, const void* src, size_t len)
+{
+ FileAccessor* file = (FileAccessor*)ctxt;
+ return file->Write(offset, src, len);
+}
+
+
+FileAccessor::FileAccessor()
+{
+ m_callbacks.context = this;
+ m_callbacks.getLength = GetLengthCallback;
+ m_callbacks.read = ReadCallback;
+ m_callbacks.write = WriteCallback;
+}
+
+
+FileAccessor::FileAccessor(BNFileAccessor* accessor): m_callbacks(*accessor)
+{
+}
+
+
+CoreFileAccessor::CoreFileAccessor(BNFileAccessor* accessor): FileAccessor(accessor)
+{
+}
+
+
+uint64_t CoreFileAccessor::GetLength() const
+{
+ return m_callbacks.getLength(m_callbacks.context);
+}
+
+
+size_t CoreFileAccessor::Read(void* dest, uint64_t offset, size_t len)
+{
+ return m_callbacks.read(m_callbacks.context, dest, offset, len);
+}
+
+
+size_t CoreFileAccessor::Write(uint64_t offset, const void* src, size_t len)
+{
+ return m_callbacks.write(m_callbacks.context, offset, src, len);
+}
+