ThePhD
62f082d999
documentation fixes from feedback and fixes!
2016-03-14 02:34:02 -04:00
ThePhD
c42c1bafe5
Documentation fixes, new tests, unique/shared_ptr support.
...
Closes #32
2016-03-13 08:30:14 -04:00
ThePhD
1a9c7484b1
Fix up the API; prepare for release.
2016-03-11 11:34:44 -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
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
ThePhD
4ed197f065
formatting
2016-02-27 08:04:02 -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
251e350539
coroutines \o/
2016-02-27 02:43:53 -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
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
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
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
f21f9c9959
Ensures value semantics and proper destructor calls.
...
Fixes for tabs/spaces
2016-01-28 19:57:02 -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
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
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
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
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
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
6a16a5a482
Some quick fixes and harmless polishes for the compat layer in state.hpp
2015-07-07 00:31:50 -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
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
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
Rapptz
da76793c30
Formatting changes.
2014-08-10 20:49:34 -04: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
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
84ae20a57a
Extraneous Cx
.
2014-07-01 05:23:27 -07:00