Fix unorded_map derp

This commit is contained in:
ThePhD 2020-10-03 17:34:34 -04:00
parent 48eea7b573
commit 48e5fc9e44
No known key found for this signature in database
GPG Key ID: 1509DB1C0F702BFA
13 changed files with 41 additions and 52 deletions

View File

@ -1,4 +1,6 @@
Read these guidelines. They are relatively simple and will allow me to help you better:
Read these guidelines. They are relatively simple and will allow me to help you better!
For Error Reports:
1. Produce a simple, short, compilable test case that reproduces your problem.
2. Make a descriptive title that summarises the bug as a whole.
@ -11,4 +13,4 @@ If you want to request a feature:
2. Include a description and title of what you would like.
3. Annotate and describe the behavior through comments, asserts or just a small write up.
Thanks for helping sol grow!
Thanks for helping sol2 grow!

View File

@ -213,8 +213,8 @@ if (SOL2_IS_TOP_LEVEL AND (SOL2_DO_TESTS OR SOL2_DO_EXAMPLES))
set(CMAKE_THREAD_PREFER_PTHREAD TRUE)
set(THREADS_PREFER_PTHREAD_FLAG TRUE)
else()
string(REGEX REPLACE "/W[0-4]" "" CMAKE_C_FLAGS ${CMAKE_C_FLAGS})
string(REGEX REPLACE "/W[0-4]" "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS})
string(REGEX REPLACE "/W[0-4]" "/W4" CMAKE_C_FLAGS ${CMAKE_C_FLAGS})
string(REGEX REPLACE "/W[0-4]" "/W4" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS})
if (BUILD_LUA_AS_DLL)
string(REGEX REPLACE "/MT" "/MD" CMAKE_C_FLAGS ${CMAKE_C_FLAGS})
string(REGEX REPLACE "/MT" "/MD" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS})

View File

@ -12,6 +12,7 @@ After that, make sure you grab either the `single header file release`_, or just
When you're ready, try compiling this short snippet:
.. literalinclude:: ../../../examples/source/tutorials/first_snippet.cpp
:lines: 1-4, 8-
:linenos:
:caption: hello_lua.cpp
:name: hello-lua
@ -31,6 +32,7 @@ If this works, you're ready to start! The first line creates the ``lua_State`` a
The second line opens a single lua-provided library, "base". There are several other libraries that come with lua that you can open by default, and those are included in the :ref:`sol::lib<lib-enum>` enumeration. You can open multiple base libraries by specifying multiple ``sol::lib`` arguments:
.. literalinclude:: ../../../examples/source/tutorials/open_multiple_libraries.cpp
:lines: 1-4, 8-
:linenos:
:caption: multiple_libraries.cpp
:name: open-multiple-libraries
@ -40,7 +42,7 @@ If you're interested in integrating sol with a project that already uses some ot
.. note::
After you learn the basics of sol, it is usually advised that if you think something can work, you should TRY IT. It will probably work!
Some more ways of loading scripts and handling errors is shown `in this example`_! There is also a full, cross-platform `example of loading a DLL`_.

View File

@ -2,6 +2,7 @@
#include <sol/sol.hpp>
#include <iostream>
#include <unordered_map>
#include "assert.hpp"
// use as-is,
@ -39,12 +40,12 @@ int main() {
lua.open_libraries(sol::lib::base);
lua.new_usertype<dynamic_object>("dynamic_object",
sol::meta_function::index, &dynamic_object::dynamic_get,
sol::meta_function::new_index, &dynamic_object::dynamic_set,
sol::meta_function::length, [](dynamic_object& d) {
return d.entries.size();
}
);
sol::meta_function::index,
&dynamic_object::dynamic_get,
sol::meta_function::new_index,
&dynamic_object::dynamic_set,
sol::meta_function::length,
[](dynamic_object& d) { return d.entries.size(); });
lua.safe_script(R"(
d1 = dynamic_object.new()

View File

@ -2,6 +2,7 @@
#include <sol/sol.hpp>
#include <iostream>
#include <unordered_map>
struct thing {
int member_variable = 5;
@ -21,11 +22,11 @@ static std::unordered_map<sol::string_view, sol::object> thing_variable_associat
void register_thing_type(sol::state& lua) {
thing_variable_associations.emplace_hint(thing_variable_associations.cend(),
"member_variable", sol::object(lua.lua_state(), sol::in_place, &sol::c_call<TEMPLATE_AUTO(&thing::member_variable)>)
);
"member_variable",
sol::object(lua.lua_state(), sol::in_place, &sol::c_call<TEMPLATE_AUTO(&thing::member_variable)>));
thing_function_associations.emplace_hint(thing_function_associations.cend(),
"member_function", sol::object(lua.lua_state(), sol::in_place, &sol::c_call<TEMPLATE_AUTO(&thing::member_function)>)
);
"member_function",
sol::object(lua.lua_state(), sol::in_place, &sol::c_call<TEMPLATE_AUTO(&thing::member_function)>));
struct call_handler {
static int lookup_function(lua_State* L) {
@ -55,7 +56,7 @@ void register_thing_type(sol::state& lua) {
// so we call out lua_CFunction that we serialized earlier
auto it = thing_variable_associations.find(*maybe_svkey);
if (it != thing_variable_associations.cend()) {
// note that calls generated by sol3
// note that calls generated by sol3
// for member variables expect the stack ordering to be
// 2(, 3, ..., n) -- value(s)
// 1 -- source
@ -87,7 +88,7 @@ void register_thing_type(sol::state& lua) {
// so we call out lua_CFunction that we serialized earlier
auto it = thing_variable_associations.find(*maybe_svkey);
if (it != thing_variable_associations.cend()) {
// note that calls generated by sol3
// note that calls generated by sol3
// for member variables expect the stack ordering to be
// 2(, 3, ..., n) -- value(s)
// 1 -- source

View File

@ -2,6 +2,9 @@
#include <sol/sol.hpp> // or #include "sol.hpp", whichever suits your needs
int main(int argc, char* argv[]) {
// silence unused warnings
(void)argc;
(void)argv;
sol::state lua;
lua.open_libraries(sol::lib::base);

View File

@ -2,7 +2,9 @@
#include <sol/sol.hpp>
int main(int argc, char* argv[]) {
// silence unused warnings
(void)argc;
(void)argv;
sol::state lua;
lua.open_libraries(sol::lib::base, sol::lib::coroutine, sol::lib::string, sol::lib::io);

View File

@ -27,6 +27,8 @@
#include <sol/stack.hpp>
#include <sol/usertype_container.hpp>
#include <unordered_map>
namespace sol {
namespace container_detail {

View File

@ -28,6 +28,7 @@
#include <sol/make_reference.hpp>
#include <bitset>
#include <unordered_map>
namespace sol { namespace u_detail {

View File

@ -20,8 +20,8 @@
// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
// This file was generated with a script.
// Generated 2020-09-26 13:38:14.149661 UTC
// This header was generated with sol v3.2.1 (revision 1fb483d)
// Generated 2020-10-03 21:34:25.034794 UTC
// This header was generated with sol v3.2.1 (revision 48eea7b5)
// https://github.com/ThePhD/sol2
#ifndef SOL_SINGLE_CONFIG_HPP

View File

@ -20,8 +20,8 @@
// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
// This file was generated with a script.
// Generated 2020-09-26 13:38:14.123663 UTC
// This header was generated with sol v3.2.1 (revision 1fb483d)
// Generated 2020-10-03 21:34:25.022965 UTC
// This header was generated with sol v3.2.1 (revision 48eea7b5)
// https://github.com/ThePhD/sol2
#ifndef SOL_SINGLE_INCLUDE_FORWARD_HPP

View File

@ -20,8 +20,8 @@
// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
// This file was generated with a script.
// Generated 2020-09-26 13:38:13.096661 UTC
// This header was generated with sol v3.2.1 (revision 1fb483d)
// Generated 2020-10-03 21:34:24.496436 UTC
// This header was generated with sol v3.2.1 (revision 48eea7b5)
// https://github.com/ThePhD/sol2
#ifndef SOL_SINGLE_INCLUDE_HPP
@ -21137,6 +21137,8 @@ namespace sol {
// end of sol/usertype_container.hpp
#include <unordered_map>
namespace sol {
namespace container_detail {
@ -21709,6 +21711,7 @@ namespace sol {
// beginning of sol/usertype_storage.hpp
#include <bitset>
#include <unordered_map>
namespace sol { namespace u_detail {

View File

@ -33,35 +33,7 @@ function(CREATE_TEST test_target_name test_name target_sol)
EXPORT_NAME sol2::${test_name})
target_link_libraries(${test_target_name}
PUBLIC Threads::Threads ${LUA_LIBRARIES} ${target_sol})
if (MSVC)
if (NOT CMAKE_COMPILER_ID MATCHES "Clang")
target_compile_options(${test_target_name}
PRIVATE /bigobj /W4)
endif()
else()
target_compile_options(${test_target_name}
PRIVATE -std=c++1z -pthread
-Wno-unknown-warning -Wno-unknown-warning-option
-Wall -Wpedantic -Werror -pedantic -pedantic-errors
-Wno-noexcept-type)
if (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
# For another day, when C++ is not so crap
# and we have time to audit the entire lib
# for all uses of `detail::swallow`...
#target_compile_options(${test_target_name}
# PRIVATE -Wcomma)
endif()
if (IS_X86)
if(MINGW)
set_target_properties(${test_target_name}
PROPERTIES
LINK_FLAGS -static-libstdc++)
endif()
endif()
endif()
if (MSVC)
target_compile_options(${test_target_name}
PRIVATE /EHsc /std:c++latest)