Jerryscript
Macros to implement methods callable from javascript within a Context class | |
Must be used inside a class constructed using As with all external functions, must be registered using | |
#define | JS_DEFINE_METHOD(method, ...) |
Argument list is fixed. More... | |
#define | JS_DEFINE_METHOD_VAR(method) |
Arguments are passed as array. More... | |
Macros to implement functions callable from javascript | |
As with all external functions, must be registered using Function arguments should be validated, returning | |
#define | JS_DEFINE_FUNCTION(func, ...) |
Argument list is fixed. More... | |
#define | JS_DEFINE_FUNCTION_VAR(func) |
Arguments are passed as array. More... | |
#define | JS_DECLARE_FUNCTION(func) jerry_value_t func(const jerry_call_info_t*, const jerry_value_t[], const jerry_length_t); |
Declare a function wrapper. More... | |
Detailed Description
Macro Definition Documentation
◆ JS_DECLARE_FUNCTION
#define JS_DECLARE_FUNCTION | ( | func | ) | jerry_value_t func(const jerry_call_info_t*, const jerry_value_t[], const jerry_length_t); |
Declare a function wrapper.
- Parameters
-
func Name of wrapper function
Use in a header file or as forward declaration
◆ JS_DEFINE_FUNCTION
#define JS_DEFINE_FUNCTION | ( | func, | |
... | |||
) |
Value:
jerry_value_t func(const jerry_call_info_t* call_info_p, const jerry_value_t args[], \
const jerry_length_t args_count) \
{ \
if(JS_NARG(__VA_ARGS__) != args_count) { \
return JS::create_arg_count_error(__FUNCTION__); \
} \
return res.release(); \
} \
Argument list is fixed.
- Parameters
-
func Name of jerryscript wrapper function ... Argument definitions
Example:
◆ JS_DEFINE_FUNCTION_VAR
#define JS_DEFINE_FUNCTION_VAR | ( | func | ) |
Value:
jerry_value_t func(const jerry_call_info_t* call_info_p, const jerry_value_t args[], \
const jerry_length_t args_count) \
{ \
return res.release(); \
} \
Arguments are passed as array.
- Parameters
-
func Name of jerryscript wrapper function
Example:
◆ JS_DEFINE_METHOD
#define JS_DEFINE_METHOD | ( | method, | |
... | |||
) |
Value:
static jerry_value_t method(const jerry_call_info_t* call_info_p, const jerry_value_t args[], \
const jerry_length_t args_count) \
{ \
using Method = JS::Value (ContextClass::*)(const jerry_call_info_t*, ...); \
if(JS_NARG(__VA_ARGS__) != args_count) { \
return JS::create_arg_count_error(__FUNCTION__); \
} \
auto& ctx = getCurrent(); \
auto m = reinterpret_cast<Method>(&ContextClass::js_##method); \
return res.release(); \
} \
Argument list is fixed.
- Parameters
-
method Name of jerryscript wrapper function ... Argument definitions
Example:
◆ JS_DEFINE_METHOD_VAR
#define JS_DEFINE_METHOD_VAR | ( | method | ) |
Value:
static jerry_value_t method(const jerry_call_info_t* call_info_p, const jerry_value_t args[], \
const jerry_length_t args_count) \
{ \
auto& ctx = getCurrent(); \
auto m = reinterpret_cast<Method>(&ContextClass::js_##method); \
auto res = (ctx.*m)(call_info_p, (JS::Value*)args, args_count); \
return res.release(); \
} \
Jerryscript::Value js_##method(const Jerryscript::CallInfo& callInfo, Jerryscript::Value args[], unsigned argCount)
Arguments are passed as array.
- Parameters
-
method Name of jerryscript wrapper function
Method declaration has the following prototype:
Example:
{
public:
void init()
{
select();
}
protected:
JS_DEFINE_METHOD_VAR(myMethod)
{
for(unsigned i = 0; i < argCount; ++i) {
}
return Value();
}
};
Maps directly onto jerry_call_info_t structure.
Definition: jerryscript/src/include/Jerryscript/Function.h:131
bool registerFunction(const String &name, jerry_external_handler_t handler)
Register an external function so it may be called from javascript.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:707
void init(IDataSourceStream *stream)
Application calls this method to set source for graphics resourcess.
void select()
Make this the current context.
Definition: Libraries/jerryscript/src/include/Jerryscript/Context.h:162
Represents a Jerryscript value.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:162
Object global()
Get global context.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:1024
Array objects have properties accessed by index.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:815
Implement a custom Context class.
Definition: Libraries/jerryscript/src/include/Jerryscript/Context.h:188
void initialise(jerry_init_flag_t flags=JERRY_INIT_EMPTY)
Initializes the JavaScript VM.
#define JS_DEFINE_METHOD_VAR(method)
Arguments are passed as array.
Definition: Libraries/jerryscript/src/include/Jerryscript/Context.h:108
#define JS_DEFINE_FUNCTION_VAR(func)
Arguments are passed as array.
Definition: jerryscript/src/include/Jerryscript/Function.h:103
#define F(string_literal)
Wrap a string literal stored in flash and access it using a String object.
Definition: WString.h:113
Callable object represent functions.
Definition: Libraries/jerryscript/src/include/Jerryscript/Types.h:993
#define JS_DEFINE_FUNCTION(func,...)
Argument list is fixed.
Definition: jerryscript/src/include/Jerryscript/Function.h:72
#define JS_DEFINE_METHOD(method,...)
Argument list is fixed.
Definition: Libraries/jerryscript/src/include/Jerryscript/Context.h:59
jerry_value_t create_arg_count_error(const char *functionName)