Commit Graph

625 Commits

Author SHA1 Message Date
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
42253cadfb guard against is_integral accepting booleans as integers 2017-06-12 10:45:51 -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
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
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
86e2de297d update single, ensure unused variables are axed 2017-05-09 13:31:44 -04:00
ThePhD
58003669fb this_environment is now live 2017-05-09 13:24:56 -04:00
ThePhD
c7237806ef add a new example, add a note, adjust for LuaJIT Beta3 and beyond (hopefully it doesn't flip its crap: will have to warn suers....) 2017-05-07 10:16:47 -04:00
Carlos Carrasco
e13711ed84 add find method to containers to make fast lookups into set/unordered_set 2017-05-03 18:54:38 -04:00
ThePhD
fc3e7c40f3 static properties work as intended, I guess 2017-04-25 19:44:53 -04:00
ThePhD
c124d51353 Fix #398 by ensuring proper usertype propagation. 2017-04-20 20:27:32 -04:00
ThePhD
3d5f80e35a Fix bad tag for clang 2017-04-19 15:29:26 -04:00
ThePhD
a3d6f8044c working stuff!~ 2017-04-19 13:00:47 -04:00
ThePhD
2acc8bee14 get_environment, documentation updates, and tests 2017-04-18 20:23:20 -04:00
ThePhD
36cc7f2863 crush the stack on final error when throwing to prevent 'leaks' in bad cases 2017-04-09 19:37:45 -04:00
ThePhD
a6e03ac214 tfw you break everything 'cause you're bad 2017-04-09 13:03:41 -04:00
ThePhD
2df532f79b There was a leak when running scripts and catching errors, where she didn't properly clean up the stack. 2017-04-09 12:04:57 -04:00
ThePhD
814562260d Fixes #394 2017-04-08 08:25:49 -04:00
ThePhD
28fff10637 Well, that bug was annoying to track down, but it was from the single.py script. This fixes #392 2017-04-06 21:15:22 -04:00
ThePhD
8c94cb730b Fix static initialization order fiasco with meta_function_names 2017-04-04 16:16:22 -04:00
ThePhD
185f5ecc05 new travis environments to be tested out for osx stuff, plus new_table docs and environments on function calls 2017-04-02 22:37:01 -04:00
ThePhD
309325d0f5 New feature: environment plus documentation about the environment table and its usage with scripts. 2017-04-02 16:10:00 -04:00
ThePhD
fb06c8a754 Fix slight error when error handler was called and the result wasn't properly moved. 2017-03-31 22:39:16 -04:00
ThePhD
91aff613bc Let's hope this isn't busted too 2017-03-31 17:59:55 -04:00
ThePhD
59b196a1db add a new kind of error handling script call, updating docs and examples 2017-03-31 17:38:04 -04:00
ThePhD
4094ba3e7a New feature: nested getter for complex nested tables, plus docs and example 2017-03-30 14:11:43 -04:00
ThePhD
791aecbcd0 New documentation for as_table and some container examples 2017-03-30 01:31:55 -04:00
ThePhD
e27922e844 Fix a latent herpderp from when I added new constructors to protected_function that resolves an ambigious implicit conversion. 2017-03-25 20:28:22 -04:00
ThePhD
3342e65b38 fixes to a lot of tests and proper subclassing for internal metatable data and work done to all of the usertypes to make them behave as expected 2017-03-23 21:13:46 -04:00
ThePhD
7c29964339 allow personal indexing function to catch rewrites to itself in usertypes statically and dynamically 2017-03-23 10:19:23 -04:00
ThePhD
a9644d0956 valid checks should be used only for non-stack-based objects: otherwise, stack things should appropriately trigger none of them and let the checker handle that portion of the code 2017-03-22 07:53:57 -04:00
ThePhD
44b4045343 change expression code so that it evalautes to a reference properly when throwing, otherwise VC++ will return a reference to a value it creates (thanks, VC++ extensions...) 2017-03-19 18:06:46 -04:00
ThePhD
ed6ae23d2e Accidentally put a critical check inside of a SOL_SAFE_USERTYPE define... Buh. 2017-03-16 10:12:17 -04:00
ThePhD
31b4dd820c silence some crap warnings and fix the inversion of the branches in the usertype metatable because I'm a dumb 2017-03-16 03:36:15 -04:00
ThePhD
21f59a997a The new constructor syntax was very easy to implement... 2017-03-16 03:07:20 -04:00
ThePhD
82482bfe3e one fix at a time... 2017-03-13 18:08:32 -04:00
ThePhD
b46901903d missed one 2017-03-13 18:03:01 -04:00
ThePhD
72fe0a5a31 remove std::move from items 2017-03-13 17:45:54 -04:00
ThePhD
30ecd7127a Tracking LuaJIT deletion bug, but it seems to be connected to the Hash Map iterator level...? Something is wrong, here... 2017-03-13 15:05:02 -04:00
ThePhD
84554c90ea VC++'s late instantiation killing me on things being used technically before they're defined, but being inside templates makes it bad... 2017-03-12 21:42:43 -04:00
ThePhD
dce8053248 Time to break everything.
Added the ability to extend all usertypes at runtime. The performance implications need to be examined closely.
variadic_args documentation was updated with the desired example demonstrating proper usage
usertype examples were updated demonstrating Lua runtime and C++ runtime updating of a usertype table
SOL_SAFE_FUNCTIONS is now part of the definitions and defined (thanks @eliasdaler)
2017-03-12 21:35:19 -04:00
ThePhD
ab9126d892 update customization points and track un-specialized structs to trigger some safe-guards as a back-compatible safety net 2017-02-20 18:07:02 -05:00