b0422b73d6
Remove dummy 0, store the crc32 there
2022-05-24 16:38:34 +02:00
e8db08931a
Add equality operators
2022-05-24 16:07:16 +02:00
e97c7bad10
Improve runtime crc32 code
...
Only check for sse4.2 once and store the best
crc32 implementation available into a static
function pointer.
Also other minor improvements.
2022-05-24 13:39:45 +02:00
e200288d06
Build fix, runtime_crc32c() should be in namespace detail
2022-05-24 13:21:56 +02:00
6a47be250f
Replace crc32 implementation
...
This is a properly constexpr version for modern c++. Also
added a fast runtime version of it.
2022-05-23 04:19:54 +02:00
addb48822f
Refactor so that make_method_bindable also accepts free functions now
2022-05-19 19:22:20 +02:00
c6d01f745a
Fix off-by-one error
...
bt::string takes the full length of the buffer including
the terminating null-char
2022-05-19 19:22:12 +02:00
7770d67392
Build fix on gcc 12
2022-05-19 19:22:12 +02:00
ab595cc8aa
Build fix on clang
2022-05-19 19:22:12 +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
9c147b1a6e
Build fix for function that is not being used by any examples yet
...
Signature of `make_wren_object()` changed slightly
2022-05-17 02:22:14 +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
b2c694c954
Split meson file for wren/detail directory
2022-05-17 00:42:11 +02:00
a17e49dd27
Version bump to 0.1.3
2022-05-15 23:09:49 +02:00
c59cc03f49
Update readme, still incomplete
2022-05-15 23:09:36 +02:00
0220529179
Fix typo
2022-05-15 20:20:28 +02:00
816a8af654
Fix memory leak, improve code
2022-05-15 20:17:42 +02:00
ce7be396d2
Improve error reporting
2022-05-15 20:17:07 +02:00
0e3e0ed506
Fix header
2022-05-15 20:16:28 +02:00
400adf50c6
Add build option wren_with_name_guessing
2022-05-15 20:14:34 +02:00
692393285d
Fix memory leaks
2022-05-15 19:19:56 +02:00
4d3dfce93f
Improve and cleanup make_foreign_class()
...
No need to have two versions of this.
Static assert when users specify ambiguous overloads.
Currently overloads are discriminated only by
parameter count, not types, so we need to enforce this.
2022-05-15 17:01:57 +02:00
a8cef95cb9
Rename function
...
I think this is the opposite of the code I'm working on
now, ie it's not called by wren to create a c++ object
but from c++ to create a wren object. I'll add an
example for this.
2022-05-15 16:19:42 +02:00
f67ec7afb1
Fix header installation
2022-05-15 16:09:18 +02:00
b8066a3f34
Add working example of constructor overloading
2022-05-15 16:03:29 +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
996a089185
Add support for class constructor parameters
2022-05-15 02:40:41 +02:00
d3ad818b8e
Fix installation
2022-05-14 19:49:29 +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
7fcb89e459
Move more stuff to wren_types.hpp
2022-04-29 18:15:02 +02:00
edd5f27ab2
Build fix
2022-04-29 12:43:06 +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
a63a8c33d8
Add make_foreign_object() function.
...
It creates an instance of the given foreign class and
returns a pointer to it. The wren object is stored in
slot 0.
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