aboutsummaryrefslogtreecommitdiffstats
path: root/lib/sol2/examples/require_dll_example/include/my_object
diff options
context:
space:
mode:
authorAndy <drumsetmonkey@gmail.com>2019-08-29 13:07:45 -0400
committerAndy <drumsetmonkey@gmail.com>2019-08-29 13:07:45 -0400
commit4ac4b280abf2ffa28caa5a532353115a3033444f (patch)
tree2a13d658bb454360b2faf401244bb0321d3460d4 /lib/sol2/examples/require_dll_example/include/my_object
parente9758416b18b27a65337c28d9641afc0ee89b34b (diff)
parent7a46fa2dd3dad3f038bf8e7339bc67abca428ae6 (diff)
Started creating scripting library/namespace and added sol2 for interfacing
Diffstat (limited to 'lib/sol2/examples/require_dll_example/include/my_object')
-rw-r--r--lib/sol2/examples/require_dll_example/include/my_object/my_object.hpp28
-rw-r--r--lib/sol2/examples/require_dll_example/include/my_object/my_object_api.hpp27
2 files changed, 55 insertions, 0 deletions
diff --git a/lib/sol2/examples/require_dll_example/include/my_object/my_object.hpp b/lib/sol2/examples/require_dll_example/include/my_object/my_object.hpp
new file mode 100644
index 0000000..f8ec5e5
--- /dev/null
+++ b/lib/sol2/examples/require_dll_example/include/my_object/my_object.hpp
@@ -0,0 +1,28 @@
+#pragma once
+
+#include <my_object/my_object_api.hpp>
+
+// forward declare as a C struct
+// so a pointer to lua_State can be part of a signature
+extern "C" {
+ struct lua_State;
+}
+// you can replace the above if you're fine with including
+// <sol.hpp> earlier than absolutely necessary
+
+namespace my_object {
+
+ struct test {
+ int value;
+
+ test() = default;
+ test(int val) : value(val) {}
+ };
+
+} // namespace my_object
+
+// this function needs to be exported from your
+// dll. "extern 'C'" should do the trick, but
+// we're including platform-specific stuff here to help
+// see my_object_api.hpp for details
+extern "C" MY_OBJECT_API int luaopen_my_object(lua_State* L);
diff --git a/lib/sol2/examples/require_dll_example/include/my_object/my_object_api.hpp b/lib/sol2/examples/require_dll_example/include/my_object/my_object_api.hpp
new file mode 100644
index 0000000..6af5f42
--- /dev/null
+++ b/lib/sol2/examples/require_dll_example/include/my_object/my_object_api.hpp
@@ -0,0 +1,27 @@
+#pragma once
+
+namespace my_object {
+
+#if defined _MSC_VER
+ #define MY_OBJECT_VC
+#elif defined __GNUC__
+ #define MY_OBJECT_GCC
+#elif defined __clang__
+ #define MY_OBJECT_CLANG
+#endif
+
+#if defined MY_OBJECT_VC
+ #if defined MY_OBJECT_DLL
+ #if defined MY_OBJECT_BUILD
+ #define MY_OBJECT_API __declspec(dllexport)
+ #else
+ #define MY_OBJECT_API __declspec(dllexport)
+ #endif // MY_OBJECT_BUILD - Building the Library vs. Using the Library
+ #else
+ #define MY_OBJECT_API
+ #endif // Building a DLL vs. Static Library
+#else // g++ / clang++
+ #define MY_OBJECT_API __attribute__ ((visibility ("default")))
+#endif // MY_OBJECT_BUILD
+
+} // namespace my_object