aboutsummaryrefslogtreecommitdiffstats
path: root/lib/sol2/examples/require_dll_example/include
diff options
context:
space:
mode:
authorAndy Belle-Isle <drumsetmonkey@gmail.com>2019-08-30 00:45:36 -0400
committerAndy Belle-Isle <drumsetmonkey@gmail.com>2019-08-30 00:45:36 -0400
commitdc2493e7525bb7633f697ef10f72b72b46222249 (patch)
tree9816755219e65d3f47fdce81c78f3736a7ddb8ab /lib/sol2/examples/require_dll_example/include
parent9d2b31797d0cfd130802b69261df2cd402e39b49 (diff)
Forget what I said, I just need to change git attributes to mark for vendor
Diffstat (limited to 'lib/sol2/examples/require_dll_example/include')
-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