ThePhD
72a445ff6a
Some minor fixes and updates
2016-09-29 03:29:48 -04:00
ThePhD
cbe599a901
Referential transparency is important.
2016-09-28 19:05:26 -04:00
ThePhD
d7b037da73
Sigh. Make sure that tuple expansion works in buggy VC++ compiler.
2016-09-26 04:02:03 -04:00
ThePhD
d88db0faff
Buh. Capturing the right semantics is always hard.
2016-09-22 11:49:29 -04:00
ThePhD
3a00ce0adf
Some minor fixes and DOCS AND EXAMPLES WOOoOooOOooOoo
2016-09-22 07:13:04 -04:00
ThePhD
9d52ed49ba
balance that stack, goddamnit, BALANCE IT
2016-09-19 23:37:00 -04:00
ThePhD
8c9c662d97
Truly, I am a spectacular idiot...
2016-09-19 01:17:58 -04:00
ThePhD
89107d3b90
Fix crashing of simple usertypes from a previous herpderp.
2016-09-19 00:36:50 -04:00
ThePhD
1593ca00af
eat a dick gcc 4.9
2016-09-17 22:39:21 -04:00
ThePhD
1dfeb1dc7c
i hate old tools
2016-09-17 22:27:28 -04:00
ThePhD
330df79ab9
OoOoOooh and the world exploooodes.
...
Added new examples to illustrate a few things people were wondering about
HEAVILY fixed up usertypes and inheritance. Again. Sigh. One day it'll all be correct.
2016-09-17 22:15:46 -04:00
ThePhD
8028628868
Merge remote-tracking branch 'origin/develop' into develop
2016-09-17 12:03:43 -04:00
ThePhD
52836c12a3
o boi simple usertype shenaaaanigans!~
2016-09-17 12:03:20 -04:00
OrfeasZ
95ddf46b55
Introduced a new simple_usertype class which derives from usertype.
...
Exposed an "add" function for it in order to allow adding members one at a time before registration.
Introduced state_view.create_simple_usertype<T>() methods for creating simple_usertypes.
2016-09-17 18:22:19 +03:00
ThePhD
3df64718ad
update everything
2016-09-14 00:10:25 -04:00
ThePhD
0e56783de9
Bark. I always forget things.
2016-09-14 00:02:15 -04:00
ThePhD
34d844a06f
gdi gcc, catch that shit -- update single
2016-09-13 12:53:59 -04:00
ThePhD
0de30f3b3a
Upgrading simple_usertype implementation with BREAKING changes. Docs now include that information too. as_function now works with usertypes for limited cases.
2016-09-13 12:37:08 -04:00
ThePhD
5dface25fb
fix problem with instantiations of abstract classes in optional reference
2016-09-10 20:59:12 -04:00
ThePhD
cb0116a3df
Add guard for luaL_loadbufferx
2016-09-04 11:41:24 -04:00
ThePhD
d451271bf4
protected function updates
2016-09-04 10:54:55 -04:00
ThePhD
c6540caf67
herped the derp: gotta leave these things alone...
2016-09-01 12:36:25 -04:00
ThePhD
431977a568
herpin' that derp
2016-09-01 09:02:50 -04:00
ThePhD
6a3b0adf0d
error detection for coroutine and protected function
2016-09-01 08:49:30 -04:00
xujh
6791d6ebf2
change std::snprintf to snprintf for android compile
2016-09-01 12:02:41 +08:00
ThePhD
5093f61615
Attempt to fix #119 by using less-powerful C++11 features and praying for the best
...
Fix #205
Partially address #204 (will need to do more -- perhaps add an automatic-conversion shim?)
2016-08-30 18:09:42 -04:00
ThePhD
5b5d1e9ca6
MIGHT AS WELL.
2016-08-27 08:45:37 -04:00
ThePhD
354c26772a
2.12.1 version includes automatic operator binding for basic comparators
...
it'll only be a matter of time before people ask me to auto-bind `operator+` and shit, but the answer for that will be no...
2016-08-25 12:50:50 -04:00
ThePhD
81ffb3f334
make sure proxies can be properly set to one another
2016-08-24 12:21:14 -04:00
ThePhD
54cffb7b6d
tables and userdata and pairs and ipairs, oh my
2016-08-24 08:31:18 -04:00
ThePhD
cf76f6baa0
V E T T E D
...
Slight breaking change, but at the source level almost nothing changes (ipairs is the only thing that changes because for some reason it checks if what is passed is a table and that really doesn't make any fucking sense)
Closes #195
Closes #196
2016-08-23 21:42:27 -04:00
ThePhD
5b65ea1460
O-O-O-OVERHAAAAAUL no not really just bug fixes....
2016-08-22 22:45:06 -04:00
Kevin Brightwell
a6c95dbb74
Add check for validity with object in require_file
...
Closes #193
2016-08-22 17:13:25 -04:00
ThePhD
56ed859d3f
unqualified unqualified unqualified
2016-08-21 22:13:26 -04:00
ThePhD
6243cbe103
push_reference should respect unique usertypes
2016-08-21 19:24:26 -04:00
ThePhD
ec97dac651
push_reference must respect unique_usertypes are primitives
2016-08-21 19:20:31 -04:00
ThePhD
fd657ea249
qq clang pls
2016-08-19 21:38:19 -04:00
ThePhD
e31ed71006
Add hinting optimization to arrays
2016-08-19 21:08:03 -04:00
ThePhD
1ae78e1b54
High performance iteration for arrays
2016-08-18 23:51:41 -04:00
ThePhD
5ac32c7863
SIGH unused FUCKING variable
2016-08-17 16:00:27 -04:00
ThePhD
d06f2e6458
remove used variable
2016-08-17 15:53:26 -04:00
ThePhD
f256afffa3
Merge remote-tracking branch 'nava2/fix-osx-include' into develop
2016-08-17 15:49:14 -04:00
ThePhD
7744a49cfe
I can spell good I promise
...
update bootstrap to properly use depsfile
2016-08-17 15:47:18 -04:00
ThePhD
4c2748eaef
Fix in_place and optional usage here
...
Add `has_begin_end` getters for standard things
2016-08-17 15:05:26 -04:00
Kevin Brightwell
366937830c
Fix #180
2016-08-17 14:29:21 -04:00
ThePhD
7903e1ec05
New initializer type called sol::factories
, and the documentation to go with it
2016-08-17 01:16:44 -04:00
ThePhD
80981c2675
Fix the inheritance for newindex based calls
2016-08-14 13:20:27 -04:00
ThePhD
f608c4f0f8
Guess who joined the fuccboi club with g++ and VC++? THAT'S RIGHT, IT'S MINGW AND IT'S HANDY DANDY FRIEND, LIBSTDC++! WOOOOOO!
2016-08-12 15:57:53 -04:00
ThePhD
0d1d5ebd09
Turns out C++ sucks when all implementers don't do things equally as fast. WHO KNEW?
2016-08-12 13:08:59 -04:00
ThePhD
ffdff21487
Trying to be smart about shit, take 1. :B
2016-08-12 12:30:18 -04:00
ThePhD
391152382c
[ci-skip] update feature table and be good at stuff
2016-08-12 11:06:14 -04:00
looki
09ba220e62
Fix 'expected .. received ..' message for function arguments
2016-08-12 04:33:26 +02:00
ThePhD
ff8ac8a6d4
One day I'll have a perfect release...
2016-08-11 11:36:39 -04:00
ThePhD
0338b7d18f
Baby you construct me in all the right ways, let's spend our lifetimes together in this wonderful scope.~
...
Closes #168
2016-08-11 09:16:23 -04:00
ThePhD
4cde2b6a3b
making questionable decisions since 1892
2016-08-11 07:25:57 -04:00
ThePhD
4aea285769
So we have 'inherited' metatables now. But is it fast?
2016-08-10 07:23:49 -04:00
ThePhD
94a1898b37
[OH GOD SO BROKEN WHY] This is tentative, untested "support" for calling inherited functions.
2016-08-10 06:32:44 -04:00
ThePhD
49cc3bddf0
Make everything super robust, thanks to @eevee pointing out some derps in how things were handled
2016-08-07 20:56:05 -04:00
ThePhD
57333bb529
Grumblemumble goddamn Xeo grumbleMumble
2016-08-07 14:04:07 -04:00
ThePhD
ba5465dd86
Fix #149 's issue because Clang and Apple together are not an OTP. 0/10 would NEVER ship together
...
Fix regression of #166 because I am retarded
Get to looking at OrfeasZ's changes so I can know what to do with base classes
2016-08-07 12:41:29 -04:00
ThePhD
dc79e72c59
sol::vars support in most places, and updated documentation
2016-08-06 18:41:54 -04:00
ThePhD
dc05552e81
sol::var is now in business
2016-08-06 17:29:07 -04:00
OrfeasZ
51b583c88a
Small typo.
2016-08-06 17:10:54 +03:00
OrfeasZ
373251c9e1
Better handling so we have 100% coverage of switch options.
2016-08-06 16:54:08 +03:00
OrfeasZ
7d6276448b
Adding open_libraries(...) support for the Lua 5.3 utf8 library.
2016-08-06 16:48:51 +03:00
ThePhD
89250697aa
Documents nullptr ( Closes #159 )
...
Documents callable structures and the function to use with `table.set` if needed (Closes #162 )
2016-08-06 00:30:35 -04:00
ThePhD
89e0b62f2d
const-ness fucking me in the ass again
2016-08-01 04:04:44 -04:00
ThePhD
045d9371df
customization points are now live
2016-07-29 00:57:47 -04:00
ThePhD
be946d415c
Merge remote-tracking branch 'origin/develop' into develop
2016-07-28 13:33:36 -04:00
ThePhD
de359acb3e
Let's do iiiit.
2016-07-28 13:33:08 -04:00
FYP
62b21b1cec
fix std::nullptr_t getter and pusher
...
according to
http://sol2.readthedocs.io/en/latest/tutorial/ownership.html it should
be that way
2016-07-26 00:31:31 +03:00
ThePhD
f1965a4364
const qq
2016-07-15 10:13:38 -04:00
ThePhD
85daffaa00
Havin' lots of derps these days. Fix #141
2016-07-15 07:33:54 -04:00
ThePhD
87eb901b01
Fix #139
2016-07-12 20:55:26 -04:00
ThePhD
6b85ed2936
At least I have users who can help me catch my dumbness. One day, I'll find someone who wants to work on something and isn't somehow insufferable.
2016-07-11 12:41:17 -04:00
ThePhD
ac5f13ce2f
Now protect should work in multiple places, albeit we still need to do some optimizations to kick it in
...
Address #137 and improve implementation to not have to pop arguments
2016-07-09 13:38:55 -04:00
ThePhD
febfdbadb7
protect could use some additional optimizations for space, but I'm kinna tired.
2016-07-09 03:43:51 -04:00
ThePhD
14ced4af69
Add more tests and fix smaller errors with overloading and such.
2016-07-09 01:12:33 -04:00
ThePhD
f7108d5e37
Usertype documentation
2016-07-07 18:11:03 -04:00
ThePhD
dbaa8f58f0
Bogus clang errors make me sad.
2016-07-07 17:11:43 -04:00
ThePhD
47f29db964
qq so close to perfect
2016-07-07 17:02:11 -04:00
ThePhD
27174aba9c
This mega-commit produces simple_usertype
to allow for faster compile times by avoiding the use of __index
internally. It sacrifices some speed and some storage optimizations and also does not allow variable syntax, but the produced table is directly modifiable.
...
Adds a `protect()` function to trigger safety for an item.
This commit also optimizes away all instances of virtual function calls for function calls and storage. Will need to test speed to see how it works out.
Closes #133
Closes #134
Closes #135
Closes #136
2016-07-07 16:52:39 -04:00
ThePhD
09ee4db1ed
More templated fixes.
...
Closes #131
Closes #126 , for the time being -- we can't make it go any faster without fundamentally breaking the system, and I can't do that to users rn
2016-06-29 14:08:26 -04:00
ThePhD
833be87011
More reductions...
2016-06-27 12:47:56 -04:00
ThePhD
bd62d99fbc
One day, I won't run into compiler differences and lame pedanticisms for C++.
...
Addresses #126
2016-06-27 12:24:14 -04:00
ThePhD
374acaa7f5
Attempt #1 at reducing compiler overhead for large numbers of template instantiations.
2016-06-27 12:15:32 -04:00
ThePhD
97c132d91d
Preserve internal type of member function calls / pointers, even if they're base types linked to derived types
2016-06-22 13:26:27 -04:00
ThePhD
0fef6556e4
Closes #125
...
Adds documentation for the new feature
Removes usages of "sol::bond" in documentation, because that was supposed to be "sol::tie"
I really don't want to spend time trying to figure out how to slim down these templates...
2016-06-22 11:33:07 -04:00
ThePhD
83ba698aba
More documentation, fix for signed/unsigned conversion issues.
2016-06-22 01:20:38 -04:00
ThePhD
d0ca1d8317
Maximum the features.
2016-06-20 09:51:26 -04:00
ThePhD
0faacb5d2c
Slight refactoring of implementation. Also, stray #endif due to not being recognized by include guard regex -- the formula must be kept...!
...
(TODO: transition sol2 to include guards...?)
2016-06-20 07:03:44 -04:00
Lau Ching Jun
b6ba214f43
Use nullptr when converting to std::function if value is nil
2016-06-20 11:53:51 +08:00
ThePhD
63b9f748f7
Nice segmentation fault, GCC
2016-06-19 19:13:01 -04:00
ThePhD
2706f19976
Having a using statement that references the deprecation mechanism triggers... deprecation.
...
Thanks, clan/g++
2016-06-19 19:06:35 -04:00
ThePhD
b6928b4b4e
Herpin' that derp.
...
SOL_NO_COMPAT is now in the proper place and documented in the compatibility part of the API.
Basic test for `table::add`
2016-06-19 19:02:40 -04:00
ThePhD
556be8da98
Documentation updates -- require function and add function and size function needed documentation
...
New `add` function as requested by @EliasD
2016-06-19 17:59:40 -04:00
ThePhD
d626eb0461
Well, that was a nasty hidden bug. But it's all clean now!
2016-06-18 04:10:47 -04:00
ThePhD
48ba47b059
The long road to correctness.
2016-06-18 03:56:44 -04:00
ThePhD
f45ecdcff4
Always unqualify / decay arguments
2016-06-18 03:45:03 -04:00
ThePhD
02428921af
SIGH name shadowing
2016-06-18 03:36:26 -04:00
ThePhD
29e4b82b4a
Formally introduce c_call
to the API with overloading ability
...
More documentation on how things work.
Once more at a 'feature-complete' state. Continue to work on #116 .
Add testcase to ensure #108 is fixed. Then, prep release.
2016-06-18 03:32:54 -04:00
ThePhD
cf5919b705
Proper workings for multiple inheritance work.
2016-06-16 20:15:56 -04:00
ThePhD
ba2dd387eb
Herp the derp.
...
Really fixes #119
2016-06-15 12:18:30 -04:00
ThePhD
3bece97a40
Statikk trampolines and new tests for the newly opened issue
...
Closes #119
2016-06-15 12:00:25 -04:00
ThePhD
d76b7ebe09
Things're gonna get silly...
2016-06-13 22:31:19 -04:00
ThePhD
9352473d59
Oopsies with index / new_index. Should fix @billw2012 's problem from #71
2016-06-12 05:21:45 -04:00
ThePhD
69b45e4d66
Fixed documentation SNAFUs and typos. Praying for stack_get speed...
2016-06-11 13:10:38 -04:00
ThePhD
412718badb
Test speed thought...
2016-06-11 11:51:56 -04:00
ThePhD
8eb10388c1
directly insert lua_cfunctions
2016-06-10 23:05:25 -04:00
ThePhD
72fcc1e6a5
nil checks. Nil checks as far as the eye can see.
2016-06-10 21:14:43 -04:00
ThePhD
e1241c110a
SPEED AND FIXES, HOOOOOOOOO!
2016-06-10 21:04:48 -04:00
ThePhD
295b7b1a08
The performance went to shit and I need all the perf tools I can get to find out why.
2016-06-09 21:14:12 -04:00
ThePhD
58fc314e6f
Fiiixes! Thanks to @CatPlusPlus and @melak47 for helping me fix this one.
...
Closes #112 .
2016-06-09 15:49:53 -04:00
ThePhD
b762de5c76
Ensure call works properly
2016-06-08 11:55:05 -04:00
ThePhD
606f8275a0
A small oopsie.
2016-06-08 11:29:30 -04:00
ThePhD
89bf8d5cbb
Making sure everything is fixed on all compilers + g++ too now
2016-06-08 11:23:17 -04:00
ThePhD
220ff5a475
Fixes the key value being left on the stack when using iterators (the other case that's not "and we're not actually using this for iteration", asides from the empty table case).
...
Closes #111 - fixed
Closes #110 - need to test exactly how much extra speed was gained
Closes #108 - seems to be fixed, albeit std::mutex is a butt on VC++
2016-06-07 20:32:10 -04:00
ThePhD
53bed40bc5
Merge remote-tracking branch 'feature/boost-optional/boost-optional' into develop
2016-06-06 15:48:32 -04:00
ThePhD
c458849d29
Many of the tests are still busted, but we're getting closer.
...
Closes #96
Closes #79
Fixes #105 - but we still need to double-check and add a test to prove it
2016-06-06 15:46:53 -04:00
ThePhD
e35fe6be85
This mega-commit implements the new usertype_metatable
while keeping everything else still intact. Blurgh, managing API versions suck...
2016-06-03 21:40:23 -04:00
Georg Sauthoff
250661b780
Use Boost Optional if SOL_USE_BOOST is defined
...
Usecase: Project already uses Boost as dependency, your compiler doesn't
come with <optional> yet and you want to minimize further dependencies.
2016-05-28 20:19:31 +02:00
ThePhD
9b65fb9f93
gotta have it on both sides yo
2016-05-20 05:39:34 -04:00
ThePhD
f70edf5686
Q_Q
2016-05-20 05:33:29 -04:00
ThePhD
8fa48627c6
awhdwjakdahwd clang++ internal linkage qqqqqqq
2016-05-20 05:25:56 -04:00
ThePhD
35d4eb3989
S I G H KEPLERPROJECT
2016-05-20 04:56:35 -04:00
ThePhD
7be09d0781
Who would have thought Lua's API between versions would be so... inconsistent.
2016-05-20 04:20:22 -04:00
ThePhD
e244a2bb67
SIGH g++
2016-05-19 17:31:57 -04:00
ThePhD
9f019ae536
Adds requires feature - Closes #90
...
Function name for getting the status was actually changed to status in all places... being consistent, yay
2016-05-19 17:27:12 -04:00
ThePhD
54551af736
tempfile soemhow got here...
2016-05-19 02:18:01 -04:00
ThePhD
3b81a7c85f
VC++ is a butt, but this Closes #91
...
It prepares for #97 as well, and blocks out #95 until I can be assed
Now, it's either performance or handling sol::property ...
2016-05-19 02:15:42 -04:00
ThePhD
96f231a183
We do have a cheap char type now, but figuring out that codecvt is super busted makes me sad
...
Safety macros are now in place. Usertype ones turned on by default
Closes #93
Closes #94
2016-05-18 21:29:17 -04:00
ThePhD
f8873064a5
And glibc is a fuccboi too.
2016-05-13 13:50:15 -04:00
ThePhD
938538b491
VC++ is a fuccboi
2016-05-13 13:42:31 -04:00
ThePhD
44cd259960
base_t templated
2016-05-13 03:13:23 -04:00
ThePhD
033c61ff1a
Constructors for many of the types updated. sol::object
now makes many more styles of types. Tests updated to match. Update documentation as per #87 . Close #88 . Close #86
2016-05-13 02:48:22 -04:00
ThePhD
a4e3caee15
TOPKEK initializers.
2016-05-11 22:09:17 -04:00
ThePhD
f1cedcb922
error on bad usertypes
2016-05-11 15:55:07 -04:00
ThePhD
45956d1637
the lua API is a nightmare
2016-05-05 16:59:17 -04:00
ThePhD
2cfce0d8ce
I can spell the goodest, I swear
2016-05-05 16:40:14 -04:00
ThePhD
9f189df874
Undocumented macro for turning of compat (for the time being)
...
adding of luaL_loadbufferx as part of the 5.1 compat layer
2016-05-05 16:36:15 -04:00
ThePhD
309947d704
flesh out load buffer a little bit
2016-05-05 16:14:13 -04:00
MisterKH
c44f577d19
add load_buffer function
2016-05-05 15:12:25 +02:00
ThePhD
1c61773354
Use absolute indices in the places where it's necessary.
2016-05-03 16:49:53 -04:00
ThePhD
2aa5ab77a8
Ordering issues make me sad.
2016-05-03 15:17:14 -04:00
ThePhD
9e31119f16
This commit adds some QoI constructor keys / types, as well as implements make_object
. The documentation has been updated as well.
...
Closes #78
Closes #77
Closes #76
Closes #75
2016-05-03 14:19:30 -04:00
ThePhD
06fecfb4ca
Fix optional usages and edge cases. Closes #74
2016-05-02 01:52:51 -04:00
ThePhD
706ca803c8
push_reference and specific notes in the documentation for it
2016-05-01 17:10:41 -04:00
ThePhD
2531f2f851
muh tabz
2016-04-24 17:40:01 -04:00
ThePhD
ea0104475c
gdi g++
2016-04-24 17:38:55 -04:00
ThePhD
f15f8dd5a7
const-correctness since nobody is going to let me be fuckin' lazy .-.
2016-04-24 17:31:32 -04:00
ThePhD
b19d1a0854
Update version numbers, fix tests, and change bond -> tie, since nobody understands what bond means
2016-04-24 10:09:05 -04:00
ThePhD
38d21827b1
:l Stop finding bugs in my code -- unique_usertype_traits implemented, sol::overloaded work for static functions
2016-04-24 01:39:44 -04:00
ThePhD
a2eced863f
shiny new load_result
type, and thusly we're ready for 2.5
.
2016-04-23 18:18:02 -04:00
ThePhD
2497567897
Inclusion argument order sorting
2016-04-23 17:40:22 -04:00
ThePhD
fdefa46ddc
missing important include
2016-04-23 17:22:14 -04:00
ThePhD
673fc3a6fa
loadfilex doesn't exist... nice.
2016-04-23 17:16:56 -04:00
ThePhD
f37eedd6c2
reverse_iterator
2016-04-23 17:13:49 -04:00
ThePhD
006357430b
Shiny quick 'n' dirty tutorial -- variadic_args now is iterable -- fixed bug with transparent args in overload resolution -- added load
functions
2016-04-23 17:07:51 -04:00
ThePhD
69ad2b4c71
better static assert
2016-04-22 17:59:44 -04:00
ThePhD
1b6062404b
Demangling will kill us one day.
2016-04-22 17:39:54 -04:00
ThePhD
2cfe74cc7f
Better demangling
...
Userdata pushed before the usertype is pushed will not latch onto the new metatable if its added
Updated tests
2016-04-22 17:06:56 -04:00
ThePhD
96da27d565
Ensure argument transparency.
2016-04-18 08:27:30 -04:00
ThePhD
062d2281d5
bit32 was deprecated, apparently. Lovely.
2016-04-17 21:14:33 -04:00
ThePhD
9872c67b4f
jit lib and all
2016-04-17 21:00:24 -04:00
ThePhD
4123830e6c
Should probably introduce a is_push_pop_transparent
trait for things like is_this_state
...
2016-04-17 03:13:46 -04:00
ThePhD
4e029b7a00
-.- Macros.
2016-04-17 02:32:51 -04:00
ThePhD
90ea495d4c
"constexpr" my ass.
2016-04-17 02:26:18 -04:00
ThePhD
88155d44e0
sol::property is implemented for usertypes now
...
sol::this_state is a transparent argument that gets the current state at any position in any callback
sol::variadic_args allows a person to get something that can reference the "rest of the arguments", though it doesn't enforce that it has to be the last argument
Closes #57
Closes #59
Closes #60
2016-04-17 02:18:34 -04:00
ThePhD
f10988363c
implicit conversion operator to make using the framework easier.
2016-04-11 18:07:25 -04:00
ThePhD
42f4455383
Allow for "static functions" to be registered on userdata like other parts of the framework, as well as self-contained structs and lambas.
...
sol::readonly for the ability to make a variable set on a userdata readonly.
No support for property yet: put on issues list for later
2016-04-11 01:02:43 -04:00
ThePhD
16007fa792
Documentation update, get_or
for proxies, and other goodies.
2016-04-09 00:55:12 -04:00
ThePhD
4cdcac2001
Ensure compilation for 2 more function types
2016-04-07 05:43:44 -04:00
ThePhD
9734577fdb
stack implementation, plus reference semantics within lua for usertypes/data now.
...
I hate my life.
I hate the projects I'm working on.
Closes #53
Closes #56
Closes #52
2016-04-07 05:21:49 -04:00
ThePhD
204bd5d5ed
This adds the additional safety features. stack_guard should probably be migrated into the tests too, since a lesser form is already used there.
...
Closes #54 #55
2016-04-04 02:28:39 -04:00
ThePhD
5efbae5798
Is pedantic safe to turn on? TIME TO FIND OUT.
2016-04-02 09:11:44 -04:00
ThePhD
c087ca30bf
.-. good thing we have travis CI
2016-03-31 16:33:21 -04:00
ThePhD
8862c65f0a
NOW we're truly feature complete. Sheesh, the work that this requires....
2016-03-31 16:16:07 -04:00
ThePhD
2d14cedc17
Eat shit, std::tuple
2016-03-31 12:12:04 -04:00
ThePhD
7af3fc4ffa
Added nullopt pushing, optional pushing, improved tests
2016-03-30 16:52:51 -04:00
ThePhD
a683d615a5
compat for g fucking libgarbage
2016-03-30 03:33:44 -04:00
ThePhD
623f83547d
Enumeraatiions...
2016-03-30 03:25:22 -04:00
ThePhD
3f753b55b9
Enumeration warnings
2016-03-30 03:24:07 -04:00
ThePhD
3abcf7f086
Fuck you, clang: http://stackoverflow.com/a/8629943/5280922
2016-03-30 03:08:53 -04:00
ThePhD
2826a1f8c0
unused q_q
2016-03-30 02:21:52 -04:00
ThePhD
2ee9967cdd
More unused parameters. .-.
2016-03-30 02:16:08 -04:00
ThePhD
20c4fee60e
unused parameter derp
2016-03-30 02:07:09 -04:00
ThePhD
92c388e30a
And nooow we're set for optional. Totally. With the get_or
implementation as well. Hopefully this will be all we need.
2016-03-30 01:40:40 -04:00
ThePhD
9804d7dd63
Merge remote-tracking branch 'zwparchman/develop' into develop
2016-03-30 00:34:05 -04:00
ThePhD
5acb33e2bc
full-on optional support. so much support it's coming through my eyeballs. Goodness.
...
Support for c_call wrapper to be a thing.
2016-03-30 00:31:18 -04:00
Zachary
6637f2e1b7
Added table::get_with_default method
...
There is now a sol::table::get_with_default method that takes 2
arguments, one being the key to search on, the other being the default.
If the key does not have a value in the table the default value is
returned.
2016-03-29 13:03:19 -05:00
ThePhD
a0fdaaaa7d
Full-on optional support.
2016-03-25 10:39:54 -04:00
ThePhD
7efc577eea
Meow.
2016-03-25 05:43:37 -04:00
ThePhD
9aabf71896
Off by one errors .-.
2016-03-25 05:38:09 -04:00
ThePhD
68660a1bed
Allow for checking whether or not a given proxy is valid.
2016-03-25 05:27:19 -04:00
ThePhD
4f99b99ee9
Properly directly include optional and reference it in C++17 and beyond.
2016-03-24 15:51:04 -04:00
ThePhD
09a0a5051a
Documentation updates and new stack::check_get API.
2016-03-24 15:45:44 -04:00
ThePhD
f43adf9a3d
Additional function creation tables and tests to keep them there.
2016-03-15 07:32:59 -04:00
ThePhD
c3bf2e04f8
I really don't like clang.
2016-03-15 06:45:49 -04:00
ThePhD
d52bc23f53
Mooooar tests. And better support for proxy and tuples.
2016-03-15 06:36:25 -04:00
ThePhD
3534bc222c
proxy is now pushable, making it usable with functions
2016-03-15 05:20:56 -04:00
ThePhD
20d85850ea
Ha ha haaa I forgot std::pair is a tuple-like type .-.
2016-03-14 18:33:10 -04:00
ThePhD
83ec159da1
Bwuh.
2016-03-14 17:19:43 -04:00
ThePhD
0c42c203c9
I program well, I swear. .-.
2016-03-14 17:12:03 -04:00
ThePhD
3de38f8da1
Easier access to specific functions.
2016-03-14 16:10:08 -04:00
ThePhD
97e36f70c5
Alright, NOW everything's kosher. Bwuh, byte order marks...
2016-03-14 09:53:24 -04:00
ThePhD
53c8961a20
Merge remote-tracking branch 'origin/develop' into develop
2016-03-14 02:34:28 -04:00
ThePhD
62f082d999
documentation fixes from feedback and fixes!
2016-03-14 02:34:02 -04:00
Patrik Huber
540926d9f4
Removed stray <feff> byte order mark
...
This fixes compiling with clang on msys2. I believe you saved these files as UTF16 once or something and these byte order marks were added by an editor.
The PR leads to the line "// The MIT License (MIT)" to no longer be present in the single-header sol.hpp at 3 occasions, but I think they were there by mistake anyway and should've been stripped by the python script, but didn't, because of the BOM. So this actually fixes that as well.
2016-03-14 00:54:23 +00:00
ThePhD
d3ccfa7426
Primetime
2016-03-13 10:03:05 -04:00
ThePhD
7f40c4edb6
Clang errors because 2 phase lookup is stupid between compilers.
2016-03-13 08:41:29 -04:00
ThePhD
c42c1bafe5
Documentation fixes, new tests, unique/shared_ptr support.
...
Closes #32
2016-03-13 08:30:14 -04:00
ThePhD
d8bc6c8612
Unfortunately have to use tag dispatched types because Clang's a piece of shit.
2016-03-11 18:41:44 -05:00
ThePhD
338278edf7
The docs are here.
2016-03-11 17:47:15 -05:00
ThePhD
7f7c51ae33
Forgot userdata and table_iterator files.
2016-03-11 11:36:13 -05:00
ThePhD
1a9c7484b1
Fix up the API; prepare for release.
2016-03-11 11:34:44 -05:00
ThePhD
5d722af1b0
Because bwuh.
2016-03-05 02:42:19 -05:00
ThePhD
e417d5ce87
forgot inheritance file
2016-03-05 01:50:17 -05:00
ThePhD
19578538e7
Inheritance
2016-03-05 01:43:45 -05:00
ThePhD
22f74a31a2
Catch EVERYTHING, even the shit we don't know about.
2016-03-03 03:16:59 -05:00
ThePhD
e06b939d73
pre-empty luajit exception handlers (turns out we really need it)
2016-03-02 21:14:58 -05:00
ThePhD
29dacd819e
new files for protected functions and its results. Allows for better doc writing.
2016-03-02 21:02:12 -05:00
ThePhD
923c774d5e
ability for functions that throw not bound by sol to catch and return lua errors that can be used by a handler function (for protected function).
2016-03-02 20:45:52 -05:00
The Phantom Derpstorm
3534be0641
Merge pull request #25 from Nava2/fix-multisymbol-luajit51
...
For some reason, on luajit5.1 these needed to be inline
2016-03-02 10:08:47 -05:00
ThePhD
ba36b1a410
Type names
2016-03-02 10:03:00 -05:00
ThePhD
c01f15ca95
g++ makes me sad
2016-03-02 09:51:40 -05:00
ThePhD
17c1dde68e
Do exceptions better
2016-03-02 09:36:42 -05:00
ThePhD
b24d17df31
Allow for exceptions to not be used.
2016-03-02 08:44:07 -05:00
Kevin Brightwell
b361780900
For some reason, on luajit5.1 these needed to be inline
2016-03-02 01:11:53 -05:00
ThePhD
4ed197f065
formatting
2016-02-27 08:04:02 -05:00
ThePhD
0113fb86b4
fix parse error with g++
2016-02-27 08:01:48 -05:00
ThePhD
d42efd7fdf
Proper trampolines to allow luajit to play nice with all the other kids in sol
.
2016-02-27 07:56:28 -05:00
ThePhD
e57ac87868
Unused parameters and all that jazz....
2016-02-27 02:59:47 -05:00
ThePhD
c07bbd248c
Formatting and a few new constants.
2016-02-27 02:49:40 -05:00
ThePhD
251e350539
coroutines \o/
2016-02-27 02:43:53 -05:00
ThePhD
1341aafa27
Unfortunately, exceptions require some overhead in luajit... overhead we can't always accept on behalf of the user.
2016-02-25 13:04:04 -05:00
ThePhD
7402b1bc95
Clearer names for some of the exposed classes.
2016-02-25 11:07:39 -05:00
ThePhD
9c21d11b8c
Proper defaults for bootstrap.py
...
Checks in g++ to make sure things compile
clang++ is a major asshole...
2016-02-24 13:59:17 -05:00
ThePhD
3d7a93ae1c
Put detail classes not part of the interface into deeper namespaces to clear up the to level.
2016-02-23 23:39:46 -05:00
ThePhD
16c6f62fe3
Remove strerror deprecation remark
2016-02-22 02:44:27 -05:00
ThePhD
166771ae8d
Proper support for mixed types of overloads.
2016-02-21 21:27:05 -05:00
ThePhD
a6a2e67dc6
Git had a sneeze and couldn't properly remove this file...
2016-02-21 19:28:30 -05:00
ThePhD
019c7b037b
Huge improvements to the library and fixes to compile in g++.
...
usertype now respects factory functions and does not make default constructors/destructors unless the compiler says its okay
new and __gc functions can be overridden for usertypes to provide handle-like creation and deletion functions
Overloading match fixes
RAII improvements for all usertypes
Added tests to make sure these features stay
2016-02-21 19:26:58 -05:00
ThePhD
b2b73db5cb
overloading searching improvements and general refactoring for cleaner implementation.
2016-02-18 22:17:52 -05:00
ThePhD
0ee92c0142
This is hard....
2016-02-16 21:22:07 -05:00
ThePhD
f62c53f155
x64 build fixes
2016-02-15 09:24:59 -05:00
ThePhD
1293213775
Several improvements to tunnneling for the library, with included tests
...
Some stack size tests are also included to prevent stack overflow as well.
2016-02-13 20:14:31 -05:00
ThePhD
228609ee17
Addresses derp from refactoring and #12
2016-02-12 12:47:05 -05:00
ThePhD
a71c9737d4
Fixed usertype checking for overloading resolution (and for userdata in general)
2016-02-11 02:28:38 -05:00
ThePhD
427194bc92
Improved functions example and adjusted all errors for g++ conformance with -Wall -Werror
2016-02-10 12:12:09 -05:00
ThePhD
2788abb34e
Overloading now works and there are tests to back it up. The codebase now relies on some C++14 features explicitly.
2016-02-10 11:36:00 -05:00
ThePhD
9372b54b02
Preparing for overload support
...
Preparing to benchmarking of several different lua frameworks
2016-02-09 03:38:11 -05:00
ThePhD
5034bd7980
Benchmarking will be done in a separate repository, alongside other frameworks.
2016-02-04 20:16:53 -05:00
ThePhD
bb29127785
Proper semantics for set
/get
...
`set_function`/`set_usertype` now properly use `set`
For the time being, we are going to avoid implementing `traverse`; aside from performance of nested table access (e.g. `int x = lua["a"]["b"]["c"]`), it's a pain. ;~;
2016-02-02 16:18:44 -05:00
ThePhD
b66c7f015a
Significant change to how userdata is stored to make access consistent across values/references/pointers.
2016-02-01 11:56:44 -05:00
ThePhD
1d93f560f2
more luajit compatibility fixes - works with Lua 5.1, 5.2, 5.3
...
additional tests to make sure pass-by-value and copy semantics work as intended
new proxy_base class to reduce code duplication
update function / protected_function usage (to solve starwing's issue while keeping code as clean as possible)
2016-02-01 03:27:06 -05:00
ThePhD
27f09fbb35
variadic set - introduction of state_view
type to allow for all of the benefits of state
without destructing lua instance.
2016-01-30 04:21:33 -05:00
ThePhD
f21f9c9959
Ensures value semantics and proper destructor calls.
...
Fixes for tabs/spaces
2016-01-28 19:57:02 -05:00
ThePhD
f389c7fe36
True luajit compatibility
2016-01-27 01:07:16 -05:00
ThePhD
31e7857870
Merge remote-tracking branch 'root/develop' into develop
...
# Conflicts:
# examples/usertype.cpp
# sol.hpp
# sol/debug.hpp
# sol/default_construct.hpp
# sol/demangle.hpp
# sol/deprecate.hpp
# sol/error.hpp
# sol/function.hpp
# sol/function_types.hpp
# sol/object.hpp
# sol/proxy.hpp
# sol/reference.hpp
# sol/resolve.hpp
# sol/stack.hpp
# sol/state.hpp
# sol/table.hpp
# sol/traits.hpp
# sol/tuple.hpp
# sol/types.hpp
# sol/usertype.hpp
# sol/usertype_traits.hpp
2016-01-24 12:16:38 -05:00
ThePhD
7c7f862cb4
fixed proxy (perhaps I broke it recently?)
2016-01-24 09:19:36 -05:00
ThePhD
8c9f8c3341
improved benchmarking
2016-01-16 02:30:49 -05:00
ThePhD
48e2c82203
benchmarking is... way too hard, truly.
2016-01-10 20:36:37 -05:00
ThePhD
9ff968a09b
Heavily improved benchmark and first set of optimizations to sol/table.hpp
, providing much lower access times for calling a function.
2016-01-08 16:16:06 -05:00
ThePhD
cc0caf365a
Version less than 5.2, (5.1 an below) not less than 5.3 (thanks Aezriel!)
2015-12-01 15:00:16 -05:00
ThePhD
a69c599f99
Ensure proper semantics for default error handler
2015-11-02 08:10:29 -05:00
ThePhD
3e17b24065
static members are hard to deal with in regular memory...
...
Also, make sure tuple returns don't get shafted by the tuple_types machinery!
2015-10-25 07:44:17 -04:00
ThePhD
4b545aa6a2
Fix tuple returns (they don't need to be explicitly expanded in many cases).
2015-10-25 07:17:48 -04:00
ThePhD
e84cf66683
decay to std::string instead of char*
, as its both safer (protects against early stack pops) and is handled better by g++'s new std::string conversion constructors
...
Make sure we're only using C++11 features (no decltype(auto))
2015-10-25 06:48:19 -04:00
ThePhD
34af96214b
tests for the lua call error handling functions...
2015-10-23 02:54:26 -04:00
ThePhD
8f59cf2eee
Set the ability to give your own panic function
2015-10-22 21:53:12 -04:00
ThePhD
42a03a2618
proper default error handler
2015-10-22 21:46:40 -04:00
ThePhD
ad039c8cc2
Allow for usage of function error handlers with lua
...
TODO: make this the default mode, with a short-cutting mode (sol::no_fail_function?)
2015-10-22 11:20:32 -04:00
ThePhD
7f4d8d8f89
Allow for failed function calls from lua.
2015-10-22 06:49:53 -04:00
ThePhD
93fe7443f0
Solve's @starwing's problem with not having the ability to check if a function call succeeded or not.
2015-10-22 06:10:30 -04:00
ThePhD
93d532094e
object is now more flexible while still supporting the same semantics
...
indentation an spacing fixes for everything
2015-10-20 21:38:28 -04:00
ThePhD
8e0cc99215
Seems like there's no more optimizations that can be made to sol/function
...
...
Only other thing to optimize is `usertype`, maybe.
2015-09-29 18:19:07 -04:00
ThePhD
895030c69e
Remove whorish return_forward.
2015-09-07 10:43:39 -04:00
ThePhD
dbeb8b5fcb
tests for the new decaying functionality
...
need to test with clang++/g++ to see if it still works
2015-07-22 02:54:43 -04:00
Rapptz
38d03eef6e
Update copyright year.
2015-07-21 19:51:17 -04:00
ThePhD
0460b33d6c
properly use decltype
and throw out the get_return
"type trait". It wasn't very useful anyhow.
2015-07-21 19:34:48 -04:00
ThePhD
946d01d228
Always reuse functions, avoid duplicate code...
2015-07-20 20:28:10 -04:00
ThePhD
219d10b0b4
Thanks to LUA_MULTRET, we can have normal function call syntax with sol::function
that doesn't require the user to pass the arguments in directly with .call<Return1, Return2, Return3>( ... )
...
function result is meant to be transient, and therefore should not be regularly storeable by the user... but there is no way to make a "and you can't have anything but a temporary to this" type, as far as I can tell.
2015-07-19 10:26:11 -04:00
ThePhD
1b8bc7c1e9
cxxabi include should not be used on VC++
2015-07-11 05:28:06 -04:00
ThePhD
9a0dda1f3d
Fix VC++ warning
2015-07-09 18:18:34 -04:00
ThePhD
feefb4859f
Oh, tabs. Oh, you...
2015-07-07 01:41:36 -04:00
ThePhD
6a16a5a482
Some quick fixes and harmless polishes for the compat layer in state.hpp
2015-07-07 00:31:50 -04:00
ThePhD
069a209a4e
Fixes for the g++/clang builds
2015-06-18 10:53:21 -04:00
ThePhD
ffcd1f557b
Some derps on the compatibility arguments
...
checkargs is now properly propogated through the "call" functions
tests now define SOL_CHECK_ARGUMENTS to make sure
the tests will always check arguments now as well (caught one minor implementation detail missing from that!)
2015-06-17 18:33:58 -04:00
ThePhD
8ff921a247
A messed up space.
2015-06-17 16:53:46 -04:00
ThePhD
e70a3c945e
Macro activates the library's default argument checking. Useful to verify during tests and the like.
2015-05-27 02:48:07 -04:00
ThePhD
74677a9125
RIP tabs.
2015-05-27 02:28:31 -04:00
ThePhD
712afc924f
Conversions from nil to nullptr and vice-versa now properly work
...
Fix for really bad derp in metamethod registration
2015-05-27 02:23:37 -04:00
ThePhD
b8d81cb927
partial implementation of lua_version...
...
It's a bit more reliable than before, but... not really that much better!
2015-05-24 23:31:18 -04:00
ThePhD
8b13e6df6f
Fix tab derps.
2015-05-24 21:38:39 -04:00
ThePhD
184f16d7fa
Updated copyright headers and added compatibility with lua 5.1.5 and luajit!
...
This means sol can now run on the fastest dynamic language implementation ever!
Wooo!~
2015-05-24 21:29:21 -04:00
ThePhD
e816d07121
Standard-compliant function signature deduction (cannot use set_function<Args...> format as that creates an ambiguity)
...
state now has for_each (runs on global table like all other functions)
added for_each tests, per @Rapptz request
2015-05-15 22:26:18 -04:00
ThePhD
1792259685
Fix tabs.
2015-05-15 12:43:53 -04:00
ThePhD
542d2a813e
new table.for_each while iterators get sorted out
2015-05-15 12:41:45 -04:00
ThePhD
bd4492b85b
This mega-commit introduces Visual Studio 2015 CTP 6 support.
...
sol::object had a few reference leaks in the way it retrieved values: it now does it properly without leaving the stack at +1 item
sol::stack was drastically cleaned up, with the following key change:
* sol::stack::push now returns an integer of the number of things its pushed (usually 1, but can be more) (Thanks, @PrincessNyanara!)
* sol::stack::call now calls functions flexibly, and getting is done more reliably
* due to the innovation of stack::call and using absolute indices, we no longer have to use reverse_call style programming to deal with lua
* sol::reference::get_type is now const-correct
* sol::state and sol::table now have a cleaned up `get` implementation since it is no longer held back by the ugliness of VC++'s incapability to handle templates
* the name `sol::userdata` now belongs to a type that actually encapsualtes a void* with a pusher/getter than gets a userdata void* value (TODO: give it a template to make it static_cast to that type on get?)
* lightuserdata_t -> light_userdata, upvalue_t -> upvalue as type names (mostly details)
* pushers for various types were updated to return integers
2015-03-01 21:14:42 -05:00
ThePhD
fa8416168e
Merge remote-tracking branch 'root/master' into api-fix
...
Conflicts:
sol/function_types.hpp
2015-02-28 18:21:39 -05:00
ThePhD
0cfcadb7eb
Prevent null string return from causing undefined behavior.
2014-12-17 16:57:14 -05:00
ThePhD
8a4595dc80
Merge branch 'master' into api-fix
2014-12-17 16:24:53 -05:00
ThePhD
99424524f3
Remove unused parameter warning.
2014-10-30 13:17:52 -04:00
ThePhD
699ae140c8
Use 2 string types to properly filter bad name-based usertype overloads.
2014-09-29 23:10:33 -04:00
ThePhD
a217fa5c7a
Proper deprecation to alert users to API name changes.
2014-09-29 23:10:32 -04:00
ThePhD
746ef74a61
Headerguard derp; fixed.
2014-09-29 23:10:31 -04:00
ThePhD
8970d3cd79
Change userdata
to usertype
names.
...
We don't need to make the function names
`open_usertype` now, since `new_usertype`
makes sense.
2014-09-29 23:10:30 -04:00
ThePhD
1e3466d173
std::size_t for life.
...
Clang's silly tautological error can die in a fire. D:<
2014-09-29 23:05:00 -04:00
Rapptz
a11faabb5c
Fix implicit conversion warnings for getter.
2014-09-29 22:45:06 -04:00
Peter Ferenc Hajdu
5fb0fef8aa
fix tautological compare error
2014-09-29 22:45:05 -04:00
Rapptz
351c5af8f6
Fix implicit conversion warnings for getter.
2014-09-29 22:24:32 -04:00
Peter Ferenc Hajdu
6b6efccb66
fix tautological compare error
2014-09-29 13:04:48 +02:00
ThePhD
4a7154b219
Add additional type to allow for types themselves to be declared deprecated (through using statements and the like).
2014-09-19 11:11:38 -04:00
ThePhD
6121da334f
Proper std::ref semantics throughout the codebase's get/set.
...
Also a convenience type `sol::ref`, which is just an
alias to `std::reference_wrapper`, to enable easy getting with `lua.get<>`
(we can't use `lua.get<some_type>` because of necessary `Unqualified<T>` use)
2014-09-18 00:23:46 -04:00
ThePhD
ad83552072
Remove bogus userdata<T>
specialization; that's not longer how we're detecting userdata.
...
Fixed Readme example, removed bad uses of `local`
2014-09-06 22:11:16 -07:00
Rapptz
e9c3bed27e
Remove noexcept that can't be met.
2014-09-05 15:53:19 -04:00
Rapptz
084a9407c6
Have to add constructor to make const variables work.
2014-09-05 15:50:40 -04:00
Rapptz
a2237eb068
Fix lack of inline in functions.
...
diff --git a/bootstrap.py b/bootstrap.py
index c24f6e5..1d6a0b3 100755
--- a/bootstrap.py
+++ b/bootstrap.py
@@ -37,6 +37,7 @@ parser = argparse.ArgumentParser()
parser.add_argument('--debug', action='store_true', help='compile with debug flags')
parser.add_argument('--cxx', metavar='<compiler>', help='compiler name to use (default: g++)', default='g++')
parser.add_argument('--ci', action='store_true', help=argparse.SUPPRESS)
+parser.add_argument('--testing', action='store_true', help=argparse.SUPPRESS)
parser.add_argument('--lua-dir', metavar='<dir>', help='directory lua is in with include and lib subdirectories')
parser.add_argument('--install-dir', metavar='<dir>', help='directory to install the headers to', default=install_dir);
parser.epilog = """In order to install sol, administrative privileges might be required.
@@ -80,6 +81,9 @@ if args.ci:
else:
ldflags.extend(libraries(['lua']))
+if args.testing:
+ cxxflags.append('-Wmissing-declarations')
+
if 'linux' in sys.platform:
ldflags.extend(libraries(['dl']))
diff --git a/sol/demangle.hpp b/sol/demangle.hpp
index 694a2be..78f4dd4 100644
--- a/sol/demangle.hpp
+++ b/sol/demangle.hpp
@@ -33,12 +33,12 @@
namespace sol {
namespace detail {
#ifdef _MSC_VER
-std::string get_type_name(const std::type_info& id) {
+inline std::string get_type_name(const std::type_info& id) {
return id.name();
}
#elif defined(__GNUC__) || defined(__clang__)
-std::string get_type_name(const std::type_info& id) {
+inline std::string get_type_name(const std::type_info& id) {
int status;
char* unmangled = abi::__cxa_demangle(id.name(), 0, 0, &status);
std::string realname = unmangled;
@@ -50,7 +50,7 @@ std::string get_type_name(const std::type_info& id) {
#error Compiler not supported for demangling
#endif // compilers
-std::string demangle(const std::type_info& id) {
+inline std::string demangle(const std::type_info& id) {
std::string realname = get_type_name(id);
const static std::array<std::string, 2> removals = {{ "struct ", "class " }};
const static std::array<std::string, 2> replacements = {{ "::", "_" }};
diff --git a/sol/resolve.hpp b/sol/resolve.hpp
index 0d849d0..1f6f606 100644
--- a/sol/resolve.hpp
+++ b/sol/resolve.hpp
@@ -28,66 +28,67 @@
namespace sol {
namespace detail {
template<typename R, typename... Args, typename F, typename = typename std::result_of<Unqualified<F>(Args...)>::type>
-auto resolve_i(types<R(Args...)>, F&&)->R(Unqualified<F>::*)(Args...) {
+inline auto resolve_i(types<R(Args...)>, F&&) -> R(Unqualified<F>::*)(Args...) {
using Sig = R(Args...);
typedef Unqualified<F> Fu;
return static_cast<Sig Fu::*>(&Fu::operator());
}
template<typename F, typename U = Unqualified<F>>
-auto resolve_f(std::true_type, F&& f) -> decltype(resolve_i(types<function_signature_t<decltype(&U::operator())>>(), std::forward<F>(f))) {
+inline auto resolve_f(std::true_type, F&& f)
+-> decltype(resolve_i(types<function_signature_t<decltype(&U::operator())>>(), std::forward<F>(f))) {
return resolve_i(types<function_signature_t<decltype(&U::operator())>>(), std::forward<F>(f));
}
template<typename F>
-void resolve_f(std::false_type, F&&) {
+inline void resolve_f(std::false_type, F&&) {
static_assert(has_deducible_signature<F>::value,
"Cannot use no-template-parameter call with an overloaded functor: specify the signature");
}
template<typename F, typename U = Unqualified<F>>
-auto resolve_i(types<>, F&& f) -> decltype(resolve_f(has_deducible_signature<U> {}, std::forward<F>(f))) {
+inline auto resolve_i(types<>, F&& f) -> decltype(resolve_f(has_deducible_signature<U> {}, std::forward<F>(f))) {
return resolve_f(has_deducible_signature<U> {}, std::forward<F>(f));
}
template<typename... Args, typename F, typename R = typename std::result_of<F&(Args...)>::type>
-auto resolve_i(types<Args...>, F&& f) -> decltype( resolve_i(types<R(Args...)>(), std::forward<F>(f))) {
+inline auto resolve_i(types<Args...>, F&& f) -> decltype( resolve_i(types<R(Args...)>(), std::forward<F>(f))) {
return resolve_i(types<R(Args...)>(), std::forward<F>(f));
}
template<typename Sig, typename C>
-Sig C::* resolve_v(std::false_type, Sig C::* mem_func_ptr) {
+inline Sig C::* resolve_v(std::false_type, Sig C::* mem_func_ptr) {
return mem_func_ptr;
}
template<typename Sig, typename C>
-Sig C::* resolve_v(std::true_type, Sig C::* mem_variable_ptr) {
+inline Sig C::* resolve_v(std::true_type, Sig C::* mem_variable_ptr) {
return mem_variable_ptr;
}
} // detail
template<typename... Args, typename R>
-auto resolve(R fun_ptr(Args...)) -> R(*)(Args...) {
+inline auto resolve(R fun_ptr(Args...)) -> R(*)(Args...) {
return fun_ptr;
}
template<typename Sig>
-Sig* resolve(Sig* fun_ptr) {
+inline Sig* resolve(Sig* fun_ptr) {
return fun_ptr;
}
template<typename... Args, typename R, typename C>
-auto resolve(R(C::*mem_ptr)(Args...)) -> R(C::*)(Args...) {
+inline auto resolve(R(C::*mem_ptr)(Args...)) -> R(C::*)(Args...) {
return mem_ptr;
}
template<typename Sig, typename C>
-Sig C::* resolve(Sig C::* mem_ptr) {
+inline Sig C::* resolve(Sig C::* mem_ptr) {
return detail::resolve_v(std::is_member_object_pointer<Sig C::*>(), mem_ptr);
}
template<typename... Sig, typename F>
-auto resolve(F&& f) -> decltype(detail::resolve_i(types<Sig...>(), std::forward<F>(f))) {
+inline auto resolve(F&& f) -> decltype(detail::resolve_i(types<Sig...>(), std::forward<F>(f))) {
return detail::resolve_i(types<Sig...>(), std::forward<F>(f));
}
} // sol
2014-08-10 21:07:19 -04:00
Rapptz
da76793c30
Formatting changes.
2014-08-10 20:49:34 -04:00
ThePhD
715efa6e20
I do believe C++'s inconsistencies will destroy me utterly one day.
...
But it is not this day. C++14 allows for not specifying the `&` in front of the member function
2014-08-09 05:49:10 -07:00
ThePhD
f18bcedd46
has_deducible versus is_class
2014-08-09 05:26:30 -07:00
ThePhD
37c3883eb6
Free functions and lambdas whos first arguments match the userdata type (unqualified)
...
now are usable as functions for userdata.
allows free functions and lambdas to provide useful operations, like operator+*-/
and other things which may not be implemented as class members.
2014-08-09 04:54:58 -07:00
ThePhD
c123fd9204
Fix unused parameter warnings on clang.
2014-08-05 09:22:43 -07:00
ThePhD
63e66a40c2
Fix clang builds due to being unable to use shortcut-syntax for overloaded. You must specify the whole signature (how droll).
2014-08-05 09:07:29 -07:00
ThePhD
7d7e46d06a
Slay some extra spaces.
2014-08-05 00:31:59 -07:00
ThePhD
2a73410a4b
Merge remote-tracking branch 'root/master'
...
Conflicts:
sol/userdata.hpp
2014-08-05 00:15:34 -07:00
ThePhD
e25d4b4c02
Properly handle const value returns (and constness in general).
...
Keeps errors when trying to bind a const variables directly,
but const returns should be forced to value-types,
since lua has no concept of `const`.
2014-08-05 00:08:41 -07:00
Rapptz
2ac3e27229
Update travis script, fix warnings.
2014-08-04 21:05:47 -04:00
Ryan Alexander
9819699105
Add include for std::free from <cstdlib>
2014-08-04 18:12:11 -04:00
ThePhD
14b1a3fe0c
Some missing support for reference-style (l-value reference and pointer) calls from lua. Fixed.
2014-07-30 00:19:58 -07:00
ThePhD
368d78d463
userdata member variables are now supported
...
userdata now performs lookup based on tables
userdata now has reduced number of vector tables
userdata garbage collection improved
debug.hpp - new header for debugging problems with stack, mostly for internal use
2014-07-27 12:56:24 -07:00
ThePhD
30c1f8c1b8
Tabs to spaces
2014-07-01 19:18:03 -07:00
ThePhD
84ae20a57a
Extraneous Cx
.
2014-07-01 05:23:27 -07:00
ThePhD
eb25bb05bb
Overloaded functions now work properly when types are specified in signature
...
this triggered overhaul of set_function/pusher<function_t>::push(...)
both state and table reflect changes to userdata structure to make it easier to use
tests updated to account for overload resolution
some function-related traits added to make use easier -- cleaned up archaic typenames in function_types.hpp
Account for std::reference_wrapper for objects -- sol now uses copy-by-default (value-semantics) for all functors
updated tests to reflect this
2014-06-28 23:16:48 -07:00
ThePhD
b41f92adc9
updated tests
...
fixed small error in state with new system
all tests passing GCC 4.9 std=c++11
2014-06-27 21:34:18 -07:00
ThePhD
36e45d88b2
userdata no longer needs to be kept around for its lifetime
...
can be discarded and lua VM will keep all necessary information
2014-06-27 21:27:48 -07:00
ThePhD
d548fdaee8
Fix spacing issues
2014-06-27 01:36:09 -07:00
ThePhD
b5a938b285
Fix spacing issues
2014-06-27 01:34:16 -07:00
ThePhD
d35de4a8fa
Fix for Issue #35
...
Userdata now properly forwards arguments to constructor
get_call now properly has extra parameters to allow for forwarding items from the first call that are not popped
Added tests to cover new cases
2014-06-27 01:25:57 -07:00
Rapptz
05dcba2fac
Fix compiler error with clang
2014-06-25 17:07:21 -04:00
PrincessNyanara
6fbae52e9f
container changes reverted
...
perhaps one day...
2014-06-09 06:29:06 -04:00
PrincessNyanara
0aab55cea4
inline fixes
...
static getter/pusher
container with Unqualified
not sure how I can make containers play nice without lookup...
2014-06-09 06:29:05 -04:00
PrincessNyanara
e5bb46afda
better Or
implementation
...
i don't think i use it anymore though...
2014-06-09 06:29:04 -04:00
PrincessNyanara
423e44d6dc
all tests compile excepted related to test_table_return_two(), which uses contiguous container std::vector but has key-value pairs inside of it
...
c++ semantics dictate that it's accessed by index, but the tests seem to want to indicate that it should be accessed like a hashmap (or just using basic lua table semantics)
i have no idea how to make this incompatibility work in the new system...
i will ask repo master if he knows anything
2014-06-09 06:29:03 -04:00
PrincessNyanara
6712ebe0bd
metamethods for containers represented using userdata,
...
`#` == __len
`[key] = value` == __newindex
`key` == __index
are not working properly for some reason, will need to investigate more deeply to find out why
on bright side all tests pass including new tests added (for take/return std::function)
fixed some things forgot to change with addition of upvalue_t for clarity (see previous commit about userdata/lightuserdata vs upvalue)
2014-06-09 06:29:01 -04:00
PrincessNyanara
3306b44162
okay std::function returns work
...
i want to use an is_function trait to differentiate classes when they get pushed
problem i feel that is_function may capture things not necessarily intended to be function objects
right now it is only qualified by pusher<function_t>
if change is necessary, then it becomes pusher<T, EnableIf<IsFunction<T>>>
2014-06-09 06:29:00 -04:00
PrincessNyanara
736d354861
distinction between "light user data" "user data" and "upvalue", as they are not the same thing
...
a lua upvalue can be lightuserdata, userdata, or anything else that can have its address taken (it's immediately popped of the stack and carted around with function call)
a lightuserdata can only be a pointer (void*)
a regular userdata can be anything, but is stored as void* because of "anything" semantics and C heritage of lua
upvalues deserve to use the `lua_upvalueindex(n)` macro: lightuserdata/userdata does not (must not) go through this process
2014-06-09 06:28:59 -04:00
PrincessNyanara
77901bb654
massive rework of stack
...
get turned into getter<T>, matches pusher<T> and uses same semantics as std::allocator and other things used throughout the codebase
-----
userdata has its traits defined outside in new file of userdata to prevent errors when trying to use those typetraits in places before userdata.hpp gets included
userdata was changed to support returning itself via pointers or references.
rework of stack changes semantics based on T&, T*, and T&& (the last one tries to create a new userdata and move in data)
solves problems maybe presented in https://github.com/Rapptz/sol/issues/25
-----
container.hpp is attempt at solving original problem before going on wild tangent with userdata, stack, and get
is going to attempt to use userdata to allow transporation of containers losslessly, perhaps without copying need
-----
found out trying to return a std::function does not work -- not sure what do exactly?
perhaps should push c closure as last thing, but right now it is tied to a key value (code comes from table.hpp and set_function)
will just have to think over how stack arranges itself and learn what to do
2014-06-09 06:28:55 -04:00
Rapptz
675d42d281
Special casing push for types where T is base of reference
2014-06-01 02:10:36 -04:00
Rapptz
6eac584c2c
Allow containers that use pairs as its value_type to return tables in lua as well
2014-06-01 01:07:26 -04:00