@crossbind/core-embind-rust 2.0.0-beta.50

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,53 @@
1
+ // crossbind-embind: host-independent FLAT registration C-ABI (the stable contract).
2
+ // The producer (embind-rs) binds only to this; each host adapter maps it to its own world.
3
+ #pragma once
4
+ #include <cstddef>
5
+ #include <cstdint>
6
+ extern "C" {
7
+ typedef const void* CrossbindTid;
8
+ typedef void* CrossbindFn; // raw function pointer (a table index on wasm, a real address natively)
9
+
10
+ void crossbind_embind_register_class(
11
+ CrossbindTid cls, CrossbindTid ptr_ty, CrossbindTid const_ptr_ty, CrossbindTid base,
12
+ const char* gat_sig, CrossbindFn get_actual_type,
13
+ const char* up_sig, CrossbindFn upcast, const char* down_sig, CrossbindFn downcast,
14
+ const char* name, const char* dtor_sig, CrossbindFn dtor);
15
+ void crossbind_embind_register_class_constructor(
16
+ CrossbindTid cls, unsigned argc, const CrossbindTid* arg_types,
17
+ const char* sig, CrossbindFn invoker, CrossbindFn ctor);
18
+ void crossbind_embind_register_class_function(
19
+ CrossbindTid cls, const char* name, unsigned argc, const CrossbindTid* arg_types,
20
+ const char* sig, CrossbindFn invoker, void* ctx,
21
+ unsigned is_pure_virtual, bool is_async, bool is_nonnull_return);
22
+ void crossbind_embind_register_class_class_function(
23
+ CrossbindTid cls, const char* name, unsigned argc, const CrossbindTid* arg_types,
24
+ const char* sig, CrossbindFn invoker, CrossbindFn method, bool is_async, bool is_nonnull_return);
25
+ void crossbind_embind_register_function(
26
+ const char* name, unsigned argc, const CrossbindTid* arg_types,
27
+ const char* sig, CrossbindFn invoker, CrossbindFn function, bool is_async, bool is_nonnull_return);
28
+ // Optional returns. Registration is idempotent per adapter (several bridge archives may ask).
29
+ // On wasm the wire is an EM_VAL handle (emval helpers live in the web adapter only); on
30
+ // native the jsi adapter converts a nullable heap cell itself.
31
+ void crossbind_embind_register_optional(CrossbindTid optional_ty, CrossbindTid inner_ty);
32
+ CrossbindTid crossbind_tid_optional_int(void);
33
+ CrossbindTid crossbind_tid_optional_double(void);
34
+ CrossbindTid crossbind_tid_optional_bool(void);
35
+ CrossbindTid crossbind_tid_optional_string(void);
36
+ void crossbind_embind_register_smart_ptr(
37
+ CrossbindTid ptr_ty, CrossbindTid pointee_ty, const char* name, int sharing_policy,
38
+ const char* gp_sig, CrossbindFn get_pointee, const char* ctor_sig, CrossbindFn constructor,
39
+ const char* share_sig, CrossbindFn share, const char* dtor_sig, CrossbindFn destructor);
40
+ void crossbind_embind_register_enum(
41
+ CrossbindTid enum_ty, const char* name, size_t size, bool is_signed, int policy_value);
42
+ void crossbind_embind_register_enum_value(CrossbindTid enum_ty, const char* value_name, int value);
43
+ void crossbind_embind_register_value_object(
44
+ CrossbindTid struct_ty, const char* name,
45
+ const char* ctor_sig, CrossbindFn ctor, const char* dtor_sig, CrossbindFn dtor);
46
+ void crossbind_embind_register_value_object_field(
47
+ CrossbindTid struct_ty, const char* field_name,
48
+ CrossbindTid getter_ret, const char* getter_sig, CrossbindFn getter, void* getter_ctx,
49
+ CrossbindTid setter_arg, const char* setter_sig, CrossbindFn setter, void* setter_ctx);
50
+ void crossbind_embind_finalize_value_object(CrossbindTid struct_ty);
51
+ // Registers a binding-init function; the host runs it when its runtime is ready.
52
+ void crossbind_embind_register_bindings(void (*init)());
53
+ }
package/package.json ADDED
@@ -0,0 +1,25 @@
1
+ {
2
+ "name": "@crossbind/core-embind-rust",
3
+ "version": "2.0.0-beta.50",
4
+ "description": "Rust producer for the crossbind embind registration protocol - bind Rust structs as classes reachable from JS on web (embind) and mobile (embind-jsi). Research/spike stage.",
5
+ "homepage": "https://github.com/crossbind/crossbind/tree/main/core/embind-rust#readme",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "https://github.com/crossbind/crossbind.git"
9
+ },
10
+ "license": "MIT",
11
+ "type": "module",
12
+ "keywords": [
13
+ "embind",
14
+ "rust",
15
+ "bind",
16
+ "c++",
17
+ "webassembly",
18
+ "jsi",
19
+ "react-native"
20
+ ],
21
+ "scripts": {
22
+ "e2e:prod": "node e2e/run.mjs",
23
+ "clear": "rm -rf crate/target demo/target e2e/demo.mjs e2e/demo.wasm e2e/jsi-shape-check"
24
+ }
25
+ }