4#include "js_thread_i.h"
7#include <flipper_application/plugins/plugin_manager.h>
8#include <flipper_application/plugins/composite_resolver.h>
14#define PLUGIN_APP_ID "js"
15#define PLUGIN_API_VERSION 1
17#define JS_SDK_VENDOR "flipperdevices"
24#define JS_GET_INST(mjs, obj) mjs_get_ptr(mjs, mjs_get(mjs, obj, INST_PROP_NAME, ~0))
28#define JS_GET_CONTEXT(mjs) JS_GET_INST(mjs, mjs_get_this(mjs))
41#define JS_ASSIGN_MULTI(mjs, object) \
46 } _ass_multi = {mjs, object, 0}; \
49#define JS_FIELD(name, value) mjs_set(_ass_multi.mjs, _ass_multi.val, name, ~0, value)
67 JsForeignMagicStart = 0x15BAD000,
68 JsForeignMagic_JsEventLoopContract,
76#define JS_ERROR_AND_RETURN(mjs, error_code, ...) \
78 mjs_prepend_errorf(mjs, error_code, __VA_ARGS__); \
79 mjs_return(mjs, MJS_UNDEFINED); \
88#define JS_ERROR_AND_RETURN_VAL(mjs, error_code, ret_val, ...) \
90 mjs_prepend_errorf(mjs, error_code, __VA_ARGS__); \
91 mjs_return(mjs, MJS_UNDEFINED); \
97typedef void* (*JsModuleConstructor)(
struct mjs*
mjs, mjs_val_t* object,
JsModules* modules);
98typedef void (*JsModuleDestructor)(
void* inst);
102 JsModuleConstructor create;
103 JsModuleDestructor destroy;
109void js_modules_destroy(
JsModules* modules);
111mjs_val_t js_module_require(
JsModules* modules,
const char* name,
size_t name_len);
119void* js_module_get(
JsModules* modules,
const char* name);
124void js_sdk_compatibility_status(
struct mjs*
mjs);
129void js_is_sdk_compatible(
struct mjs*
mjs);
134void js_check_sdk_compatibility(
struct mjs*
mjs);
139void js_does_sdk_support(
struct mjs*
mjs);
144void js_check_sdk_features(
struct mjs*
mjs);
Definition composite_resolver.c:10
Interface for ELF loader to resolve symbols.
Definition elf_api_interface.h:9
Definition js_modules.h:100
Definition js_modules.c:40