Commit graph

71 commits

Author SHA1 Message Date
addb48822f Refactor so that make_method_bindable also accepts free functions now 2022-05-19 19:22:20 +02:00
1fa6d62f17 Add support for registering foreign methods that return foreign objects
Still a bit work in progress but functioning
2022-05-18 18:48:18 +02:00
41692eb0bc Fix for aarch64 2022-05-17 01:33:51 +02:00
eadd25b827 Foreign function callbacks now receive a ModuleAndName parameter too.
This commit breaks the ARM64 version, I will fix it next.

Lots going on here. DynafuncMaker got updated to store strings
to back the ModuleAndName objects that get hardcoded in the
assembly glue function.
ModuleAndName is not a typedef to a tuple anymore, because I
discovered that tuples suck. They get always pushed on the stack
when passed as parameter, instead the new implementation gets
passed into 2 registers being it a standard layout type.

dhandy::bt::string got updated so it can be used as a literal
value for non-type template parameters, which allowed for a
really easy to use `wren::MN<>` helper. Code now fully requires
c++20.
2022-05-17 01:06:36 +02:00
ce7be396d2 Improve error reporting 2022-05-15 20:17:07 +02:00
692393285d Fix memory leaks 2022-05-15 19:19:56 +02:00
abbb3b3818 Clean up include directory structure 2022-05-15 15:41:00 +02:00
9921e59a6b Add support for foreign constructor overload
Make vm_fun.hpp fun again by moving setters/getters
into a separate header.
Add new make_overloaded_foreign_class(), but code is still
untested and it's a work in progress at this point.
Interface will change.
2022-05-15 15:35:25 +02:00
036dd57524 Allow chaining calls to add_class_maker() 2022-05-14 18:06:35 +02:00
258237cbf3 Implement ClassManager
Very similar to CallbackManager in its functioning.
2022-05-14 17:06:25 +02:00
74670f4683 Extract consecutive strings logic into a separate class
This is going to be also used in the upcoming ClassManager class.
It also makes FullSignatureOwning less cluttered.
2022-05-14 16:20:50 +02:00
d985ebc417 Fix assert due to typo 2022-05-12 23:53:15 +02:00
c2089568f3 Bugfixes and improvements, simplify examples 2022-04-29 18:35:46 +02:00
fa0183a3bf Implement CallbackManager
With it users don't have to provide a foreign_method_fn()
function anymore, it's become optional.
2022-04-29 18:16:57 +02:00
5d6575f328 Add make_foreign_object() overload
It's only available when users define WRENPP_WITH_NAME_GUESSING
and it automatically retrieves the class name of T using
new code in guess_class_name.hpp. Only tested on gcc so far.
Microsoft compiler doesn't seem to understand consteval keyword.
2022-04-29 12:34:01 +02:00
10e3c9adac Correctly manage the case of string=nil if wreng_string_t is string_view 2022-04-29 12:34:01 +02:00
31ba3af348 Update copyright year 2022-04-28 22:56:11 +02:00
6f4b0ce094 Pass string_view instead of const char* to callback functions 2022-04-28 22:55:22 +02:00
f84234cede Remove redundant const 2022-04-25 01:30:22 +02:00
30746aec19 Revert "Add ret to avoid data being "executed""
This reverts commit 1713a22ef4.
2022-04-25 00:41:02 +02:00
1713a22ef4 Add ret to avoid data being "executed" 2022-04-24 22:07:39 +02:00
e157607df6 Update copyright year on recently modified files 2022-04-24 03:43:19 +02:00
7a821fcd2c Add support for aarch64 2022-04-24 03:41:14 +02:00
1a01a016f2 Remove unnecessary function 2022-04-22 22:38:19 +02:00
f749b7fb18 call() will fail earlier when object for call doesn't exist 2022-04-22 22:04:09 +02:00
0255edb8be Update wren to latest and fix build 2022-04-22 22:02:59 +02:00
839dbccfb1 Assert that there is at least one slot allocated 2022-04-22 10:36:35 +02:00
cfc8bb89f8 Add convenience variable_ensure_slot 2021-02-12 14:43:25 +01:00
52d9210400 Include vector size in mem usage count 2021-02-12 14:43:25 +01:00
dc10c38a3f Add reset() method 2021-02-12 14:43:25 +01:00
719a57d3e8 Add lib name to config header 2021-02-10 23:14:13 +01:00
3c318d6771 Add a very simple test program
Not quite a unit test, it looks more like an example
but still something.
2021-02-02 14:04:27 +01:00
6a30725a62 Add arbitrary method to foreign_method_t conversion helper
It might not work in every case, you still are restricted
to types that set() and get() understand.
2020-05-03 12:23:06 +02:00
34d2317f11 Add support for foreign types to get()
wren::get() can now be used to get foreign types by pointer.
Invoking get<A>() will return an A*. With this change it's
now possible to use variables() to get mixed foreign
and core types.
2020-05-03 11:32:43 +02:00
cad9f96739 Add a reallocate_fn() to DefConfiguration implemented around new/delete 2020-05-02 23:28:48 +02:00
65189a5575 Move files around
Sample main.cpp is now into examples/greet
2020-05-02 22:55:10 +02:00
3a8285a518 Fix crash when user's foreign_method_fn() returns nil. 2020-05-02 00:05:36 +02:00
f33900b351 Allow users to store a custom pointer into the VM object. 2020-05-01 17:44:09 +02:00
279a34237b I don't see any reason to get a pointer, I want a ref instead 2020-05-01 01:53:53 +02:00
274a2fea11 Update sample code in main(), fix the rest as required 2020-05-01 01:39:11 +02:00
640cc0e493 Reordering things a bit
I currently have meson 0.52.1 and the default_library=static
option has no effect for me, but I'm leaving it there in case
this changes in the future.
2020-05-01 00:14:55 +02:00
a3dcb583d7 Attach licence 2020-04-30 23:33:54 +02:00
6fc3422548 This file also belongs to the wren lib, move it 2020-04-30 22:57:52 +02:00
0f0d149ad2 Move public headers to a separate directory, make a library 2020-04-30 22:50:46 +02:00
7252a6e1ec Remove unneeded function 2020-04-30 22:29:13 +02:00
b1c1ae40f5 Add call() overload that takes a string literal as wren's function name.
Only the function name needs to be passed in and not the full
signature. The implementation will append the appropriate
(_,_,...) part making it at build time.
2020-04-30 21:18:29 +02:00
4f54739ab6 Add substr() method. It looks correct to me. Fingers crossed! 2020-04-30 21:09:53 +02:00
f70899aed1 Import string_bt from duckhandy
Modified to use std::make_index_sequence instead of the
equivalent duckhandy utility.
2020-04-30 20:47:22 +02:00
751667769c Wrap more c functions. 2020-04-30 19:58:26 +02:00
df52fe0fba Add support for calling wren methods from c++ using call() 2020-04-30 19:58:09 +02:00