King_DuckZ
16c4b8cbe5
Wren expects this function to return a pointer to a function that takes a WrenVM*. This is bad news because that type is wrapped inside wren::VM and client code doesn't know about it. It would be better for client code to return a pointer to a function that takes a VM* instead. In order to do the VM* to WrenVM* translation I make a "handmade" closure, that is I generate a function at runtime that contains the VM* hardcoded into it. The same function also contains the hardcoded address of the callback function client code wanted to use. By doing this I can pass a different function pointer to Wren for each foreign method, and that function knows how to forward the call to the real client callback. Currently only implemented for amd64 gnu/linux.
17 lines
457 B
Meson
17 lines
457 B
Meson
project('wrentest', 'cpp',
|
|
version: '1.0.0',
|
|
meson_version: '>=0.49.2',
|
|
default_options: ['debug=true', 'cpp_std=c++17', 'b_ndebug=if-release'],
|
|
)
|
|
|
|
wren_dep = dependency('wren', version: '>=0.2.0', fallback: ['wren', 'wren_dep'])
|
|
|
|
executable(meson.project_name(),
|
|
'src/main.cpp',
|
|
'src/wren/vm.cpp',
|
|
'src/wren/configuration.cpp',
|
|
'src/wren/def_configuration.cpp',
|
|
'src/wren/dynafunc_maker.cpp',
|
|
dependencies: [wren_dep],
|
|
install: true,
|
|
)
|