Commit Graph

1558 Commits

Author SHA1 Message Date
ThePhD
e69e7c79fa C++17 additions: std::variant, string_views of all types, checker for if we have the right version
added variadic_results, to return a variable number of arguments to Lua
added variadic_results and as_results
added improved function examples (for multiple results and split overloading out)
added tests for variadics
added tests for C++17 utilities
added a forwarding header
added a specific `unsafe_function` header
added and improved documetation pages
2017-07-09 12:54:52 -04:00
Rohlem
077448bfc8 enable move semantics when pushing rvalue optional
add forward_like-style cast to stack::pusher<optional<O>>
2017-07-06 20:13:09 -04:00
Rohlem
958fd037ab add test case for moving on rvalue-optional push 2017-07-06 20:13:09 -04:00
ThePhD
504f49f3c7 update state to use default handler 2017-07-04 04:41:32 -04:00
ThePhD
345a398cdc [ci-skip] doc polish 2017-07-01 11:20:39 -04:00
ThePhD
aea873a485 update single 2017-07-01 11:04:16 -04:00
ThePhD
da28527421 prepare for container_traits to be a thing
update large parts of the documentation and add a new section to streamline information about functions
2017-07-01 11:02:15 -04:00
ThePhD
1a6937e24e Revert previous change of not pushing nil when we encounter a nullptr from special usertypes. If people want to check, they'll need to use optional or a raw pointer: messing with the raw usertype can also lead to some surprising problems, so we don't need to specialize for that use case. 2017-06-30 18:18:25 -04:00
ThePhD
874a14f2d9 [ci skip] update documentation 2017-06-29 12:31:38 -04:00
Ilia Udalov
8d5aa69117 Fix compilation on Max OS X with lua 5.1 2017-06-27 21:26:07 -04:00
ThePhD
0973d789fa add a second parameter, forget to write it in the test
what am I good for aaah
2017-06-26 10:20:53 -04:00
ThePhD
af2136ba00 Closes #431
If only I had a test that took a unique_ptr as a second argument. RIP.
2017-06-26 10:10:47 -04:00
ThePhD
13370e7e42 more constructors PogChamp 2017-06-24 10:20:07 -04:00
ThePhD
17271c84cb BREAKING CHANGE: std::pair for regular containers that are not marked as as_table_t or as_nested will now behave like regular containers and not force themselves to be key-value pairs. table-style serialization is still unaffected. 2017-06-23 18:07:24 -04:00
ThePhD
6b34a15d68 it would help if I was not blind 2017-06-19 23:06:57 -04:00
ThePhD
5468ab8b4e Let's hope we didn't break shit... 2017-06-19 23:04:23 -04:00
ThePhD
5363a63de0 g++ sometimes chokes on parsing certain combinations of characters because of disambiguation rules 2017-06-17 00:52:02 -04:00
ThePhD
b811e73b90 who knew noexcept proofing would be so hard...? And there's so many places it could be activated in...! 2017-06-17 00:43:26 -04:00
ThePhD
11916a7c72 add noexcept function type barriers and guards
noexcept-proof function call trampolines
add noexcept tests to ensure its being checked
TODO: check g++ 7.1 builds when using -std=c++17 ...
2017-06-16 18:43:40 -04:00
Rohlem
39fdb5e041 add noexcept specializations to meta (detail) template trait structs
fixes the noexcept tests for C++17 (on my compiler)
2017-06-16 13:35:28 -04:00
Rohlem
db39b2f316 added test cases for noexcept functions
All pass in C++14, broken in C++17
2017-06-16 13:35:28 -04:00
ThePhD
4f959c9a41 update single 2017-06-15 01:24:53 -04:00
ThePhD
0fb53335c4 this commit adds support for differentiating between multiple different unique_usertypes without actually having to store type information. It does not include the ability to override a unique_usertype label for a specific type, but that might not prove necessary if differentiation remains possible with this methodology
Complete fixes #422 and addresses #423
2017-06-15 01:23:51 -04:00
ThePhD
85620df63c new checker for unique_usertype to ensure type safety, when SOL_CHECK_ARGUMENTS or a protected tag is used to protect a function 2017-06-13 16:34:18 -04:00
ThePhD
51a03b2b35 [ci skip] add docs about running out of heap space 2017-06-12 17:34:42 -04:00
ThePhD
0fb52a1152 I can write tests, I promise 2017-06-12 10:49:38 -04:00
ThePhD
42253cadfb guard against is_integral accepting booleans as integers 2017-06-12 10:45:51 -04:00
ThePhD
50935ae66b [ci skip] update readme 2017-06-07 15:27:49 -04:00
ThePhD
e1c8d4b061 clang and gcc differ in their use of unknown options.... which is always nice, always nice for two compilers to fight with each other 2017-06-07 13:24:53 -04:00
ThePhD
b391a709bc no-unknown-warning should prevent older compilers from barfing 2017-06-07 13:02:51 -04:00
ThePhD
d8f6127bf8 boosted pragmas 2017-06-07 12:53:24 -04:00
ThePhD
02110a5361 update single with newest version
Fixes #414
FIxes #419
2017-06-07 12:36:35 -04:00
ThePhD
661386c384 revert codecvt fix for MinGW v7 and greater
add docs about compiler support
add notes about compilation issues
update single
2017-06-07 12:33:59 -04:00
ThePhD
090c834f2c Let nullptr pass through, but we still can't do a conversion from lua_nil to unique_usertypes. 2017-06-07 11:02:47 -04:00
ThePhD
ea895b4338 hard errors for container usertypes if SOL_CHECK_ARGUMENTS is defined.
otherwise, as usual, we assume you know what you're doing
2017-06-03 06:25:06 -04:00
ThePhD
7168c3177b Add some additional documentation to aid in understanding 2017-05-31 18:58:24 -04:00
ThePhD
51245a9e7b go to hell, gcc and clang 2017-05-29 13:06:37 -04:00
ThePhD
fd8e2df92e fix some semantics for container usertypes, their iterators, and how they push their value types (to cope with crappy input iterator "containers")
add better handling for `readonly` to prevent bugs from `const`-ifying the return value of a member variable (e.g., unexpected copy semantics)
add more tests and add a few more handlers for new readonly type
fix simple_usertype_metatable's handling of newindex and index when not at the top level
2017-05-29 10:32:37 -04:00
ThePhD
c6d11a2bac fix index and newindex semantics on simple_usertypes
we do not have to hit the metatable by-name since we go to special lengths to ensure we have a simple usertype table we can use
2017-05-28 19:14:18 -04:00
ThePhD
acee4dbbc9 [ci skip] fix docs 2017-05-27 11:00:15 -04:00
ThePhD
2393d0bcfd update single 2017-05-20 20:03:28 -04:00
ThePhD
6047f48343 vet container_usertype and wrap for the proper traits regarding assignment and checking of said assignments
update documentation with more tips and other similar things
2017-05-20 20:01:04 -04:00
ThePhD
5ff394ae0d use the copy assignable trait, even if that's not exactly what we're going for... 2017-05-16 20:20:59 -04:00
ThePhD
51d6f6fa54 You would think that we'd have accounted for this earlier...
Fixes #405
2017-05-16 06:12:28 -04:00
ThePhD
34b81bef6b Handle qualified name failures of VC++, where using templates do not match the fully qualified names of what they alias to (Thanks, VC++) 2017-05-15 10:41:50 -04:00
ThePhD
7eccb5883e Sigh. I hate you, LuaJIT. 2017-05-09 15:16:51 -04:00
ThePhD
934f55058d Of course LuaJIT woudl ruin everything. 2017-05-09 15:12:20 -04:00
ThePhD
a0255fac54 LuaJIT implements a tail call optimization that folds / flattens / crushes part of the stack, making it (and its related environment) impossible to retrieve through the C API. This is... disconcerting, but you can get around it by adding extra parenthesis around return types to prevent tail call optimization at that site. 2017-05-09 14:31:27 -04:00
ThePhD
86e2de297d update single, ensure unused variables are axed 2017-05-09 13:31:44 -04:00
ThePhD
8efafca46a [ci skip] update single, bump version 2017-05-09 13:27:23 -04:00