summaryrefslogtreecommitdiff
path: root/view/sharedcache/core/ffi_global.h
diff options
context:
space:
mode:
authorMason Reed <mason@vector35.com>2025-03-10 11:05:40 -0400
committerMason Reed <mason@vector35.com>2025-04-02 05:36:54 -0400
commit25cc02431b61097b2adfc2fbc493b648b0300c3b (patch)
treea79d9c4f4f67234d3bf9bda413e8608f479a4cc8 /view/sharedcache/core/ffi_global.h
parentfa85bf28502286c4821427c5d0ed91a7ed46f8f6 (diff)
[SharedCache] Refactor Shared Cache
In absence of a better name, this commit refactors the shared cache code.
Diffstat (limited to 'view/sharedcache/core/ffi_global.h')
-rw-r--r--view/sharedcache/core/ffi_global.h41
1 files changed, 41 insertions, 0 deletions
diff --git a/view/sharedcache/core/ffi_global.h b/view/sharedcache/core/ffi_global.h
new file mode 100644
index 00000000..cd2727b9
--- /dev/null
+++ b/view/sharedcache/core/ffi_global.h
@@ -0,0 +1,41 @@
+/*
+Copyright 2020-2024 Vector 35 Inc.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+#pragma once
+
+// Define macros for defining objects exposed by the API
+#define DECLARE_DSC_API_OBJECT(handle, cls) \
+ namespace BinaryNinja::DSC { \
+ class cls; \
+ } \
+ struct handle \
+ { \
+ BinaryNinja::DSC::cls* object; \
+ }
+#define IMPLEMENT_DSC_API_OBJECT(handle) \
+\
+private: \
+ handle m_apiObject; \
+\
+public: \
+ typedef handle* APIHandle; \
+ handle* GetAPIObject() \
+ { \
+ return &m_apiObject; \
+ } \
+\
+private:
+#define INIT_DSC_API_OBJECT() m_apiObject.object = this;