├── .clang-format ├── .dockerignore ├── .github ├── ISSUE_TEMPLATE.md └── workflows │ ├── macos.yml │ ├── ubuntu.yml │ └── windows.yml ├── .gitignore ├── .style.yapf ├── CMakeLists.txt ├── CONTRIBUTING.md ├── CONTRIBUTORS.md ├── Dockerfile ├── LICENSE.txt ├── README.md ├── cmake ├── Includes │ └── Project.cmake ├── Modules │ ├── CheckCompilerDiagnostic.cmake │ ├── CheckCompilerFlag.cmake │ ├── Common │ │ └── Core.cmake │ └── FindVersion.cmake ├── Packages │ ├── FindKaguyaBuild.cmake │ ├── FindLua │ │ ├── set_version_vars.cmake │ │ └── version_check.cmake │ ├── FindLuaBridgeBuild.cmake │ ├── FindLuaBuild.cmake │ ├── FindLuaBuild │ │ ├── LuaJIT.cmake │ │ └── LuaVanilla.cmake │ ├── FindLuwraBuild.cmake │ ├── FindSphinx.cmake │ └── FindToLuappBuild.cmake └── sol2-config.cmake.in ├── documentation ├── .clang-format ├── CMakeLists.txt ├── Doxyfile.in ├── Makefile ├── make.bat ├── presentations │ ├── 2016.10.14 - ThePhD - No Overhead C Abstraction.pdf │ ├── 2017.11.08 - ThePhD - Wrapping Lua C in C++.pdf │ ├── 2018.02.06 - ThePhD - Biting the CMake Bullet.pdf │ ├── 2018.05.10 - ThePhD - Compile Fast, Run Faster, Scale Forever.pdf │ ├── 2018.09.28 - ThePhD - Scripting at the Speed of Thought.pdf │ └── 2019.05.10 - ThePhD - The Plan for Tomorrow - Compile-Time Extension Points in C++.pdf ├── requirements.txt └── source │ ├── _themes │ └── sol2 │ │ ├── layout.html │ │ ├── static │ │ ├── search-fix.js_t │ │ └── sol2.css_t │ │ └── theme.conf │ ├── api │ ├── api-top.rst │ ├── as_args.rst │ ├── as_container.rst │ ├── as_function.rst │ ├── as_returns.rst │ ├── as_table.rst │ ├── c_call.rst │ ├── compatibility.rst │ ├── coroutine.rst │ ├── environment.rst │ ├── error.rst │ ├── function.rst │ ├── lua_value.rst │ ├── make_reference.rst │ ├── metatable_key.rst │ ├── nested.rst │ ├── new_table.rst │ ├── object.rst │ ├── optional.rst │ ├── overload.rst │ ├── policies.rst │ ├── property.rst │ ├── protect.rst │ ├── protected_function.rst │ ├── proxy.rst │ ├── readonly.rst │ ├── reference.rst │ ├── resolve.rst │ ├── stack.rst │ ├── stack_reference.rst │ ├── state.rst │ ├── table.rst │ ├── table_traversal_keys.rst │ ├── this_environment.rst │ ├── this_state.rst │ ├── thread.rst │ ├── tie.rst │ ├── types.rst │ ├── unique_usertype_traits.rst │ ├── user.rst │ ├── userdata.rst │ ├── usertype.rst │ ├── usertype_memory.rst │ ├── var.rst │ ├── variadic_args.rst │ ├── variadic_results.rst │ └── yielding.rst │ ├── benchmarks.rst │ ├── build.rst │ ├── codecvt.rst │ ├── compilation.rst │ ├── conf.py │ ├── containers.rst │ ├── errors.rst │ ├── exceptions.rst │ ├── features.rst │ ├── functions.rst │ ├── index.rst │ ├── licenses.rst │ ├── media │ ├── Ko-fi_Blue.png │ ├── become_a_patron_button.png │ ├── bench │ │ ├── base_derived.png │ │ ├── c_function.png │ │ ├── c_function_through_lua_in_c.png │ │ ├── implicit_inheritance.png │ │ ├── lua_bindings_shootout.json │ │ ├── lua_function_in_c.png │ │ ├── member_function_call.png │ │ ├── multi_return.png │ │ ├── multi_return_lua.png │ │ ├── optional_failure.png │ │ ├── optional_half_failure.png │ │ ├── optional_success.png │ │ ├── return_userdata.png │ │ ├── stateful_function_object.png │ │ ├── table_chained_get.png │ │ ├── table_chained_set.png │ │ ├── table_get.png │ │ ├── table_global_string_get.png │ │ ├── table_global_string_set.png │ │ ├── table_set.png │ │ ├── userdata_variable_access.png │ │ ├── userdata_variable_access_large.png │ │ └── userdata_variable_access_last.png │ ├── discord_logo_wordmark.png │ ├── eevee_code_after.jpg │ ├── eevee_code_before.jpg │ ├── github_logo.png │ ├── github_sponsors_logo.png │ ├── liberapay_logo.png │ ├── pp_cc_mark_111x69.jpg │ ├── sol.png │ └── sol.psd │ ├── mentions.rst │ ├── origin.rst │ ├── performance.rst │ ├── rtti.rst │ ├── safety.rst │ ├── threading.rst │ ├── traits.rst │ ├── tutorial │ ├── all-the-things.rst │ ├── customization.rst │ ├── cxx-in-lua.rst │ ├── existing.rst │ ├── functions.rst │ ├── getting-started.rst │ ├── ownership.rst │ ├── tutorial-top.rst │ └── variables.rst │ └── usertypes.rst ├── examples ├── .clang-format ├── CMakeLists.txt ├── customization │ ├── CMakeLists.txt │ ├── include │ │ ├── entity.hpp │ │ ├── lua_interop.hpp │ │ ├── lua_zm_interop.hpp │ │ └── zm │ │ │ └── vec3.hpp │ └── source │ │ ├── lua_interop.cpp │ │ ├── lua_zm_interop.cpp │ │ └── main.cpp ├── interop │ ├── LuaBridge │ │ ├── CMakeLists.txt │ │ └── source │ │ │ └── LuaBridge.cpp │ ├── kaguya │ │ ├── CMakeLists.txt │ │ └── source │ │ │ └── kaguya.cpp │ ├── luwra │ │ ├── CMakeLists.txt │ │ └── source │ │ │ └── luwra.cpp │ └── tolua │ │ ├── CMakeLists.txt │ │ └── source │ │ ├── Player.h │ │ ├── Player.pkg │ │ ├── tolua.cpp │ │ └── tolua_Player.h ├── require_dll_example │ ├── CMakeLists.txt │ ├── include │ │ └── my_object │ │ │ ├── my_object.hpp │ │ │ └── my_object_api.hpp │ └── source │ │ ├── my_object.cpp │ │ └── require_from_dll.cpp └── source │ ├── allocation_limit.cpp │ ├── any_return.cpp │ ├── args_from_container.cpp │ ├── as_returns.cpp │ ├── basic.cpp │ ├── c_array.cpp │ ├── c_call.cpp │ ├── calling_lua_functions.cpp │ ├── config.cpp │ ├── config.lua │ ├── container_usertype_as_container.cpp │ ├── container_with_pairs.cpp │ ├── containers.cpp │ ├── containers_as_table.cpp │ ├── coroutine.cpp │ ├── coroutine_multiple_stacks.cpp │ ├── coroutine_state.cpp │ ├── custom_reader.cpp │ ├── customization_base_object_catch.cpp │ ├── customization_convert_on_get.cpp │ ├── customization_global_transparent_argument.cpp │ ├── customization_multiple.cpp │ ├── docs │ ├── as_function.cpp │ ├── as_function_usertype_member_variable.cpp │ ├── as_table_ipairs.cpp │ ├── coroutine_main.cpp │ ├── coroutine_thread.cpp │ ├── inheritance.cpp │ ├── my_panic.cpp │ ├── preparing_environments.cpp │ ├── references_in_lambdas.cpp │ ├── runtime_extension.cpp │ ├── simple_functions.cpp │ ├── simple_structs.cpp │ ├── state_script_safe.cpp │ ├── state_transfer.cpp │ └── std_thread.cpp │ ├── dump.cpp │ ├── dynamic_object.cpp │ ├── environment_snooping.cpp │ ├── environment_state.cpp │ ├── environment_state_2.cpp │ ├── environments.cpp │ ├── environments_on_functions.cpp │ ├── error_handler.cpp │ ├── exception_handler.cpp │ ├── functions.cpp │ ├── functions_empty_arguments.cpp │ ├── index_and_newindex_usertype.cpp │ ├── indirect_function_calls.cpp │ ├── lua_stream.cpp │ ├── lua_value.cpp │ ├── metatable_customization.cpp │ ├── metatable_key_low_level.cpp │ ├── multi_results.cpp │ ├── optional_with_iteration.cpp │ ├── overloading.cpp │ ├── overloading_with_fallback.cpp │ ├── overloading_with_members.cpp │ ├── overridable_function_members.cpp │ ├── pairs.cpp │ ├── pairs_with_raw_functions.cpp │ ├── player_script.lua │ ├── property.cpp │ ├── protect.cpp │ ├── protected_functions.cpp │ ├── read_only.cpp │ ├── require.cpp │ ├── require_override_behavior.cpp │ ├── runtime_additions.cpp │ ├── script_error_handling.cpp │ ├── self_from_lua.cpp │ ├── shared_ptr.cpp │ ├── shared_ptr_inheritance.cpp │ ├── shared_ptr_modify_in_place.cpp │ ├── singleton.cpp │ ├── stack_aligned_function.cpp │ ├── stack_aligned_stack_handler_function.cpp │ ├── static_variables.cpp │ ├── table_as_container.cpp │ ├── table_create_if_nil.cpp │ ├── table_proxy.cpp │ ├── tables.cpp │ ├── this_state.cpp │ ├── tie.cpp │ ├── tutorials │ ├── erase_demo.cpp │ ├── first_snippet.cpp │ ├── lazy_demo.cpp │ ├── multiple_return.cpp │ ├── object_lifetime.cpp │ ├── open_multiple_libraries.cpp │ ├── pointer_lifetime.cpp │ ├── quick_n_dirty │ │ ├── arguments_to_scripts.cpp │ │ ├── functions_all.cpp │ │ ├── functions_easy.cpp │ │ ├── make_tables.cpp │ │ ├── multiple_returns_from_lua.cpp │ │ ├── multiple_returns_to_lua.cpp │ │ ├── namespacing.cpp │ │ ├── opening_a_state.cpp │ │ ├── opening_state_on_raw_lua.cpp │ │ ├── running_lua_code.cpp │ │ ├── running_lua_code_low_level.cpp │ │ ├── running_lua_code_safely.cpp │ │ ├── self_call.cpp │ │ ├── set_and_get_variables.cpp │ │ ├── set_and_get_variables_exists.cpp │ │ ├── tables_and_nesting.cpp │ │ ├── userdata.cpp │ │ ├── userdata_memory_reference.cpp │ │ └── usertypes.cpp │ ├── reading_functions.cpp │ ├── variables_demo.cpp │ ├── write_variables_demo.cpp │ ├── writing_functions.cpp │ ├── writing_member_functions.cpp │ ├── writing_overloaded_template_functions.cpp │ └── writing_template_functions.cpp │ ├── unique_ptr.cpp │ ├── usertype.cpp │ ├── usertype_advanced.cpp │ ├── usertype_automatic_operators.cpp │ ├── usertype_basics.cpp │ ├── usertype_bitfields.cpp │ ├── usertype_call_from_c++.cpp │ ├── usertype_constructors.cpp │ ├── usertype_dynamic_get_set.cpp │ ├── usertype_initializers.cpp │ ├── usertype_special_functions.cpp │ ├── usertype_var.cpp │ ├── variables.cpp │ ├── variadic_args.cpp │ ├── variadic_args_into_lua.cpp │ ├── variadic_args_shifted.cpp │ ├── variadic_args_storage.cpp │ └── wip │ └── lua_inheritance.cpp ├── include └── sol │ ├── abort.hpp │ ├── as_args.hpp │ ├── as_returns.hpp │ ├── assert.hpp │ ├── base_traits.hpp │ ├── bind_traits.hpp │ ├── bytecode.hpp │ ├── call.hpp │ ├── compatibility.hpp │ ├── compatibility │ ├── compat-5.3.c.h │ ├── compat-5.3.h │ ├── compat-5.4.h │ └── lua_version.hpp │ ├── config.hpp │ ├── coroutine.hpp │ ├── debug.hpp │ ├── demangle.hpp │ ├── deprecate.hpp │ ├── detail │ └── build_version.hpp │ ├── dump_handler.hpp │ ├── ebco.hpp │ ├── environment.hpp │ ├── epilogue.hpp │ ├── error.hpp │ ├── error_handler.hpp │ ├── forward.hpp │ ├── forward_as.hpp │ ├── forward_detail.hpp │ ├── function.hpp │ ├── function_result.hpp │ ├── function_types.hpp │ ├── function_types_core.hpp │ ├── function_types_overloaded.hpp │ ├── function_types_stateful.hpp │ ├── function_types_stateless.hpp │ ├── function_types_templated.hpp │ ├── in_place.hpp │ ├── inheritance.hpp │ ├── load_result.hpp │ ├── lua_table.hpp │ ├── lua_value.hpp │ ├── make_reference.hpp │ ├── metatable.hpp │ ├── object.hpp │ ├── object_base.hpp │ ├── optional.hpp │ ├── optional_implementation.hpp │ ├── overload.hpp │ ├── packaged_coroutine.hpp │ ├── pairs_iterator.hpp │ ├── pointer_like.hpp │ ├── policies.hpp │ ├── prologue.hpp │ ├── property.hpp │ ├── protect.hpp │ ├── protected_function.hpp │ ├── protected_function_result.hpp │ ├── protected_handler.hpp │ ├── proxy_base.hpp │ ├── raii.hpp │ ├── reference.hpp │ ├── resolve.hpp │ ├── sol.hpp │ ├── stack.hpp │ ├── stack │ └── detail │ │ └── pairs.hpp │ ├── stack_check.hpp │ ├── stack_check_get.hpp │ ├── stack_check_get_qualified.hpp │ ├── stack_check_get_unqualified.hpp │ ├── stack_check_qualified.hpp │ ├── stack_check_unqualified.hpp │ ├── stack_core.hpp │ ├── stack_field.hpp │ ├── stack_get.hpp │ ├── stack_get_qualified.hpp │ ├── stack_get_unqualified.hpp │ ├── stack_guard.hpp │ ├── stack_iterator.hpp │ ├── stack_pop.hpp │ ├── stack_probe.hpp │ ├── stack_proxy.hpp │ ├── stack_proxy_base.hpp │ ├── stack_push.hpp │ ├── stack_reference.hpp │ ├── state.hpp │ ├── state_handling.hpp │ ├── state_view.hpp │ ├── string_view.hpp │ ├── table.hpp │ ├── table_core.hpp │ ├── table_iterator.hpp │ ├── table_proxy.hpp │ ├── thread.hpp │ ├── tie.hpp │ ├── traits.hpp │ ├── trampoline.hpp │ ├── tuple.hpp │ ├── types.hpp │ ├── unicode.hpp │ ├── unique_usertype_traits.hpp │ ├── unreachable.hpp │ ├── unsafe_function.hpp │ ├── unsafe_function_result.hpp │ ├── userdata.hpp │ ├── usertype.hpp │ ├── usertype_container.hpp │ ├── usertype_container_launch.hpp │ ├── usertype_core.hpp │ ├── usertype_proxy.hpp │ ├── usertype_storage.hpp │ ├── usertype_traits.hpp │ ├── utility │ ├── is_integer.hpp │ └── to_string.hpp │ ├── variadic_args.hpp │ ├── variadic_results.hpp │ ├── version.hpp │ └── wrapper.hpp ├── list_headers.py ├── meson.build ├── meson_options.txt ├── scripts ├── build.linux.sh ├── preparation.linux.sh ├── preparation.osx.sh ├── push.linux.sh ├── run.linux.sh └── run.osx.sh ├── single ├── CMakeLists.txt └── single.py ├── sol2.natvis ├── sol2.pc.in ├── subprojects └── lua.wrap └── tests ├── CMakeLists.txt ├── config_tests ├── CMakeLists.txt ├── function_pointers │ ├── CMakeLists.txt │ └── source │ │ ├── main.cpp │ │ └── retrieval.cpp └── integer_value_fits │ ├── CMakeLists.txt │ └── source │ ├── main.cpp │ └── negative_size_t.cpp ├── container_exhaustive ├── CMakeLists.txt └── source │ ├── exhaustive.cpp │ └── main.cpp ├── coroutines ├── CMakeLists.txt └── source │ ├── array_proxy_lifetime.cpp │ ├── main.cpp │ └── properties_lifetime.cpp ├── enum ├── CMakeLists.txt └── source │ ├── main.cpp │ └── read_only_iteration.cpp ├── environment ├── CMakeLists.txt └── source │ ├── get.cpp │ ├── main.cpp │ ├── sandboxing.cpp │ ├── shadowing.cpp │ └── this_environment.cpp ├── exceptions ├── CMakeLists.txt └── source │ ├── functions.cpp │ ├── functions.noexcept.cpp │ ├── functions.yielding.cpp │ ├── main.cpp │ ├── usertypes.cpp │ └── usertypes.yielding.cpp ├── inclusion ├── CMakeLists.txt └── source │ ├── as_args.cpp │ ├── as_returns.cpp │ ├── base_traits.cpp │ ├── bind_traits.cpp │ ├── bytecode.cpp │ ├── call.cpp │ ├── compatibility.cpp │ ├── compatibility │ ├── compat-5.3.cpp │ └── lua_version.cpp │ ├── config.cpp │ ├── coroutine.cpp │ ├── debug.cpp │ ├── demangle.cpp │ ├── deprecate.cpp │ ├── detail │ └── build_version.cpp │ ├── ebco.cpp │ ├── environment.cpp │ ├── error.cpp │ ├── error_handler.cpp │ ├── forward.cpp │ ├── forward_detail.cpp │ ├── function.cpp │ ├── function_result.cpp │ ├── function_types.cpp │ ├── function_types_core.cpp │ ├── function_types_overloaded.cpp │ ├── function_types_stateful.cpp │ ├── function_types_stateless.cpp │ ├── function_types_templated.cpp │ ├── in_place.cpp │ ├── inheritance.cpp │ ├── load_result.cpp │ ├── lua_table.cpp │ ├── lua_value.cpp │ ├── main.cpp │ ├── make_reference.cpp │ ├── metatable.cpp │ ├── object.cpp │ ├── object_base.cpp │ ├── optional.cpp │ ├── optional_implementation.cpp │ ├── overload.cpp │ ├── packaged_coroutine.cpp │ ├── pairs_iterator.cpp │ ├── pointer_like.cpp │ ├── policies.cpp │ ├── property.cpp │ ├── protect.cpp │ ├── protected_function.cpp │ ├── protected_function_result.cpp │ ├── protected_handler.cpp │ ├── proxy.cpp │ ├── proxy_base.cpp │ ├── raii.cpp │ ├── reference.cpp │ ├── resolve.cpp │ ├── sol.cpp │ ├── stack.cpp │ ├── stack │ └── detail │ │ └── pairs.cpp │ ├── stack_check.cpp │ ├── stack_check_get.cpp │ ├── stack_check_get_qualified.cpp │ ├── stack_check_get_unqualified.cpp │ ├── stack_check_qualified.cpp │ ├── stack_check_unqualified.cpp │ ├── stack_core.cpp │ ├── stack_field.cpp │ ├── stack_get.cpp │ ├── stack_get_qualified.cpp │ ├── stack_get_unqualified.cpp │ ├── stack_guard.cpp │ ├── stack_iterator.cpp │ ├── stack_pop.cpp │ ├── stack_probe.cpp │ ├── stack_proxy.cpp │ ├── stack_proxy_base.cpp │ ├── stack_push.cpp │ ├── stack_reference.cpp │ ├── state.cpp │ ├── state_handling.cpp │ ├── state_view.cpp │ ├── string_view.cpp │ ├── table.cpp │ ├── table_core.cpp │ ├── table_iterator.cpp │ ├── thread.cpp │ ├── tie.cpp │ ├── traits.cpp │ ├── trampoline.cpp │ ├── tuple.cpp │ ├── types.cpp │ ├── unicode.cpp │ ├── unique_usertype_traits.cpp │ ├── unsafe_function.cpp │ ├── unsafe_function_result.cpp │ ├── userdata.cpp │ ├── usertype.cpp │ ├── usertype_container.cpp │ ├── usertype_container_launch.cpp │ ├── usertype_core.cpp │ ├── usertype_proxy.cpp │ ├── usertype_storage.cpp │ ├── usertype_traits.cpp │ ├── utility │ ├── is_integer.cpp │ └── to_string.cpp │ ├── variadic_args.cpp │ ├── variadic_results.cpp │ ├── version.cpp │ └── wrapper.cpp ├── lua_lifetime ├── CMakeLists.txt └── source │ └── main.cpp ├── numerics ├── CMakeLists.txt └── source │ ├── large.cpp │ └── main.cpp ├── regression_tests ├── 1011 │ ├── CMakeLists.txt │ └── source │ │ └── 1011 - release mode crash MSVC.cpp ├── CMakeLists.txt └── simple │ ├── CMakeLists.txt │ └── source │ ├── 1000 - readonly warning.cpp │ ├── 1008 - as_function binding triggers correctly.cpp │ ├── 1067 - optional bindings.cpp │ ├── 1072 - capture exception propagation.cpp │ ├── 1087 - readonly property error checking.cpp │ ├── 1095 - raw_get from global table fails.cpp │ ├── 1096 - functions binding wrong.cpp │ ├── 1144 - type destructed from non-destructed memory.cpp │ ├── 1149 - static method gets const-morphed in internals.cpp │ ├── 1192 - incorrect alignment calculation.cpp │ ├── 1211 - protected_function_result nullptr.cpp │ ├── 1266 - add method in Lua 5.4 showing freelist.cpp │ ├── 1315 - keep-alive memory.cpp │ └── main.cpp ├── run_time ├── CMakeLists.txt └── source │ ├── basic.cpp │ ├── common_classes.hpp │ ├── container.usertype_check.cpp │ ├── container_semantics.cpp │ ├── container_semantics.custom.cpp │ ├── container_semantics.ordered.cpp │ ├── container_semantics.unordered.cpp │ ├── container_shims.cpp │ ├── container_table.cpp │ ├── containers.cpp │ ├── containers.roundtrip.cpp │ ├── containers.table.cpp │ ├── coroutines.cpp │ ├── customizations.cpp │ ├── customizations_private.cpp │ ├── dump.cpp │ ├── functions.cpp │ ├── functions.std.cpp │ ├── gc.cpp │ ├── lua_value.cpp │ ├── main.cpp │ ├── operators.cpp │ ├── overflow.cpp │ ├── plain_types.cpp │ ├── policies.cpp │ ├── proxies.cpp │ ├── sol_test.hpp │ ├── state.cpp │ ├── storage.cpp │ ├── strings.cpp │ ├── tables.checks.cpp │ ├── tables.clear.cpp │ ├── tables.cpp │ ├── tables.enums.cpp │ ├── tables.indexing.cpp │ ├── tables.insertion.cpp │ ├── tables.traversal.cpp │ ├── usertypes.auxiliary_keys.cpp │ ├── usertypes.basic.cpp │ ├── usertypes.constructors.cpp │ ├── usertypes.cpp │ ├── usertypes.inheritance.cpp │ ├── usertypes.inheritance.multi.cpp │ ├── usertypes.member_variables.cpp │ ├── usertypes.overload.cpp │ ├── usertypes.properties.cpp │ ├── usertypes.runtime.cpp │ ├── usertypes.unique.cpp │ ├── usertypes.unregister.cpp │ ├── utility.cpp │ └── variadics.cpp └── utility ├── CMakeLists.txt └── source ├── is_integer.cpp ├── main.cpp └── to_string.cpp /.github/ISSUE_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | Read these guidelines. They are relatively simple and will allow me to help you better! 2 | 3 | For Error Reports: 4 | 5 | 1. Produce a simple, short, compilable test case that reproduces your problem. 6 | 2. Make a descriptive title that summarises the bug as a whole. 7 | 3. Explain the bug in as much detail as you can in the body of the issue. 8 | 4. Include Compiler/IDE (Visual Studio, XCode...), Build and Deployment System, Language (C++, Objective-C++), and any special defines you have set. 9 | 10 | If you want to request a feature: 11 | 12 | 1. Produce any relevant imaginary code that illustrates what you would like or desired behavior. 13 | 2. Include a description and title of what you would like. 14 | 3. Annotate and describe the behavior through comments, asserts or just a small write up. 15 | 16 | Thanks for helping sol2 grow! 17 | -------------------------------------------------------------------------------- /.github/workflows/macos.yml: -------------------------------------------------------------------------------- 1 | name: Mac OS 2 | 3 | on: [push] 4 | 5 | env: 6 | CTEST_OUTPUT_ON_FAILURE: 1 7 | 8 | jobs: 9 | build: 10 | 11 | runs-on: macos-latest 12 | 13 | steps: 14 | - uses: actions/checkout@v2 15 | with: 16 | submodules: recursive 17 | 18 | - name: configure 19 | run: | 20 | cmake -B build/debug -D CMAKE_BUILD_TYPE:STRING=Debug "-DSOL2_LUA_VERSION:STRING=5.4" -DSOL2_PLATFORM:STRING=x64 -DSOL2_CI=ON -DSOL2_BUILD_LUA:BOOL=ON -DBUILD_LUA_AS_DLL:BOOL=OFF -DSOL2_TESTS:BOOL=ON -DSOL2_EXAMPLES:BOOL=ON -DSOL2_TESTS_EXAMPLES:BOOL=ON 21 | cmake -B build/release -D CMAKE_BUILD_TYPE:STRING=Release "-DSOL2_LUA_VERSION:STRING=5.4" -DSOL2_PLATFORM:STRING=x64 -DSOL2_CI=ON -DSOL2_BUILD_LUA:BOOL=ON -DBUILD_LUA_AS_DLL:BOOL=OFF -DSOL2_TESTS:BOOL=ON -DSOL2_EXAMPLES:BOOL=ON -DSOL2_TESTS_EXAMPLES:BOOL=ON 22 | - name: build 23 | run: | 24 | cmake --build build/debug --config Debug 25 | cmake --build build/release --config Release 26 | - name: test 27 | run: | 28 | cd build/debug 29 | ctest --build-config Debug 30 | cd ../.. 31 | cd build/release 32 | ctest --build-config Release 33 | cd ../.. 34 | -------------------------------------------------------------------------------- /.github/workflows/ubuntu.yml: -------------------------------------------------------------------------------- 1 | name: Ubuntu 2 | 3 | on: [push] 4 | 5 | env: 6 | CTEST_OUTPUT_ON_FAILURE: 1 7 | 8 | jobs: 9 | build: 10 | 11 | runs-on: ubuntu-latest 12 | 13 | steps: 14 | - uses: actions/checkout@v2 15 | with: 16 | submodules: recursive 17 | 18 | - name: configure 19 | run: | 20 | cmake -B build/debug -D CMAKE_BUILD_TYPE:STRING=Debug "-DSOL2_LUA_VERSION:STRING=5.4" -DSOL2_PLATFORM:STRING=x64 -DSOL2_CI=ON -DSOL2_BUILD_LUA:BOOL=ON -DBUILD_LUA_AS_DLL:BOOL=OFF -DSOL2_TESTS:BOOL=ON -DSOL2_EXAMPLES:BOOL=ON -DSOL2_TESTS_EXAMPLES:BOOL=ON 21 | cmake -B build/release -D CMAKE_BUILD_TYPE:STRING=Release "-DSOL2_LUA_VERSION:STRING=5.4" -DSOL2_PLATFORM:STRING=x64 -DSOL2_CI=ON -DSOL2_BUILD_LUA:BOOL=ON -DBUILD_LUA_AS_DLL:BOOL=OFF -DSOL2_TESTS:BOOL=ON -DSOL2_EXAMPLES:BOOL=ON -DSOL2_TESTS_EXAMPLES:BOOL=ON 22 | - name: build 23 | run: | 24 | cmake --build build/debug --config Debug 25 | cmake --build build/release --config Release 26 | - name: test 27 | run: | 28 | cd build/debug 29 | ctest --build-config Debug 30 | cd ../.. 31 | cd build/release 32 | ctest --build-config Release 33 | cd ../.. 34 | -------------------------------------------------------------------------------- /.style.yapf: -------------------------------------------------------------------------------- 1 | [style] 2 | based_on_style = pep8 3 | use_tabs = true 4 | indent_width = 5 5 | 6 | spaces_before_comment = 1 7 | spaces_around_power_operator = true 8 | space_between_ending_comma_and_closing_bracket = true 9 | 10 | continuation_align_style = SPACE 11 | split_before_first_argument = false 12 | split_complex_comprehension = true 13 | dedent_closing_brackets = false 14 | coalesce_brackets = true 15 | align_closing_bracket_with_visual_indent = false 16 | -------------------------------------------------------------------------------- /CONTRIBUTORS.md: -------------------------------------------------------------------------------- 1 | # 🎉 Donators! ♥ 🎉 2 | 3 | Thank you to all patrons, donators and contributors who help keep sol2 amazing. 4 | 5 | - Robert Salvet 6 | - Ορφέας Ζαφείρης - 2x Donations! 7 | - Michael Wallar 8 | - Johannes Schultz 9 | - Elias Daler 10 | - BECKMANN & EGLE Industrieelektronik GmbH [bue.de](https://www.bue.de/) 11 | 12 | 13 | # 🎉 Patrons! ♥ 🎉 14 | 15 | Beyond just a one-time donation, patrons make a continued commitment to help keep sol2 supported and bug-free. Thank you for your patronage! Here are the supporters that wanted to be featured as sol2 contributors. 16 | 17 | - Joel Falcou 18 | - Michael Caisse 19 | - Joshua Fisher 20 | - Ορφέας Ζαφείρης 21 | 22 | 23 | # Company Patrons / Supporters # 24 | 25 | Companies who sign up for a long-term support contract or patronage are listed here! They really push forward what's possible with sol2 (and the newer v3)! Please reach out to phdofthehouse@gmail.com if you are interested in a custom solution or a long-term support contract that goes beyond the current release's needs! 26 | 27 | - Intrepid Control Systems [intrepidcs.com](https://www.intrepidcs.com/) 28 | -------------------------------------------------------------------------------- /LICENSE.txt: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2013-2022 Rapptz, ThePhD, and contributors 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of 6 | this software and associated documentation files (the "Software"), to deal in 7 | the Software without restriction, including without limitation the rights to 8 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 9 | the Software, and to permit persons to whom the Software is furnished to do so, 10 | subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 17 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 18 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 19 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 20 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | -------------------------------------------------------------------------------- /documentation/presentations/2016.10.14 - ThePhD - No Overhead C Abstraction.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ThePhD/sol2/c1f95a773c6f8f4fde8ca3efe872e7286afe4444/documentation/presentations/2016.10.14 - ThePhD - No Overhead C Abstraction.pdf -------------------------------------------------------------------------------- /documentation/presentations/2017.11.08 - ThePhD - Wrapping Lua C in C++.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ThePhD/sol2/c1f95a773c6f8f4fde8ca3efe872e7286afe4444/documentation/presentations/2017.11.08 - ThePhD - Wrapping Lua C in C++.pdf -------------------------------------------------------------------------------- /documentation/presentations/2018.02.06 - ThePhD - Biting the CMake Bullet.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ThePhD/sol2/c1f95a773c6f8f4fde8ca3efe872e7286afe4444/documentation/presentations/2018.02.06 - ThePhD - Biting the CMake Bullet.pdf -------------------------------------------------------------------------------- /documentation/presentations/2018.05.10 - ThePhD - Compile Fast, Run Faster, Scale Forever.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ThePhD/sol2/c1f95a773c6f8f4fde8ca3efe872e7286afe4444/documentation/presentations/2018.05.10 - ThePhD - Compile Fast, Run Faster, Scale Forever.pdf -------------------------------------------------------------------------------- /documentation/presentations/2018.09.28 - ThePhD - Scripting at the Speed of Thought.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ThePhD/sol2/c1f95a773c6f8f4fde8ca3efe872e7286afe4444/documentation/presentations/2018.09.28 - ThePhD - Scripting at the Speed of Thought.pdf -------------------------------------------------------------------------------- /documentation/presentations/2019.05.10 - ThePhD - The Plan for Tomorrow - Compile-Time Extension Points in C++.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ThePhD/sol2/c1f95a773c6f8f4fde8ca3efe872e7286afe4444/documentation/presentations/2019.05.10 - ThePhD - The Plan for Tomorrow - Compile-Time Extension Points in C++.pdf -------------------------------------------------------------------------------- /documentation/requirements.txt: -------------------------------------------------------------------------------- 1 | breathe 2 | cmake 3 | ninja 4 | -------------------------------------------------------------------------------- /documentation/source/_themes/sol2/layout.html: -------------------------------------------------------------------------------- 1 | {%- extends "haiku/layout.html" %} 2 | 3 | {% set script_files = script_files + ["_static/search-fix.js"] %} 4 | 5 | {% block haikuheader %} 6 |