summaryrefslogtreecommitdiff
path: root/view/kernelcache/core/ffi_global.h
diff options
context:
space:
mode:
authorkat <kat@vector35.com>2025-07-06 15:05:01 -0400
committerkat <kat@vector35.com>2025-07-07 07:37:23 -0400
commit768f7c78465fb93936e5ca50a0ca712664fe54e7 (patch)
tree78c73e0022d6006882e365a257595a5b55a37432 /view/kernelcache/core/ffi_global.h
parent8f3e251c42169fb4fe8db9403d900571434d88ff (diff)
KernelCache rewrite
Diffstat (limited to 'view/kernelcache/core/ffi_global.h')
-rw-r--r--view/kernelcache/core/ffi_global.h41
1 files changed, 41 insertions, 0 deletions
diff --git a/view/kernelcache/core/ffi_global.h b/view/kernelcache/core/ffi_global.h
new file mode 100644
index 00000000..0effdb81
--- /dev/null
+++ b/view/kernelcache/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_KC_API_OBJECT(handle, cls) \
+ namespace BinaryNinja::KC { \
+ class cls; \
+ } \
+ struct handle \
+ { \
+ BinaryNinja::KC::cls* object; \
+ }
+#define IMPLEMENT_KC_API_OBJECT(handle) \
+\
+private: \
+ handle m_apiObject; \
+\
+public: \
+ typedef handle* APIHandle; \
+ handle* GetAPIObject() \
+ { \
+ return &m_apiObject; \
+ } \
+\
+private:
+#define INIT_KC_API_OBJECT() m_apiObject.object = this;