diff options
Diffstat (limited to 'targets/mbedos5/jerryscript-mbed/jerryscript-mbed-library-registry/source/wrap_tools.cpp')
-rw-r--r-- | targets/mbedos5/jerryscript-mbed/jerryscript-mbed-library-registry/source/wrap_tools.cpp | 97 |
1 files changed, 52 insertions, 45 deletions
diff --git a/targets/mbedos5/jerryscript-mbed/jerryscript-mbed-library-registry/source/wrap_tools.cpp b/targets/mbedos5/jerryscript-mbed/jerryscript-mbed-library-registry/source/wrap_tools.cpp index 21607657..15c1eb6b 100644 --- a/targets/mbedos5/jerryscript-mbed/jerryscript-mbed-library-registry/source/wrap_tools.cpp +++ b/targets/mbedos5/jerryscript-mbed/jerryscript-mbed-library-registry/source/wrap_tools.cpp @@ -12,66 +12,73 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -#include <stdlib.h> -#include <stdio.h> - #include "jerryscript-mbed-library-registry/wrap_tools.h" -bool jsmbed_wrap_register_global_function(const char* name, jerry_external_handler_t handler) { - jerry_value_t global_object_val = jerry_get_global_object(); - jerry_value_t reg_function = jerry_create_external_function(handler); - - bool is_ok = true; +#include <stdio.h> +#include <stdlib.h> - if (!(jerry_value_is_function(reg_function) - && jerry_value_is_constructor(reg_function))) { - is_ok = false; - LOG_PRINT_ALWAYS("Error: jerry_create_external_function failed!\r\n"); - jerry_release_value(global_object_val); - jerry_release_value(reg_function); - return is_ok; - } +bool +jsmbed_wrap_register_global_function (const char* name, jerry_external_handler_t handler) +{ + jerry_value_t global_object_val = jerry_current_realm (); + jerry_value_t reg_function = jerry_function_external (handler); - if (jerry_value_is_error(reg_function)) { - is_ok = false; - LOG_PRINT_ALWAYS("Error: jerry_create_external_function has error flag! \r\n"); - jerry_release_value(global_object_val); - jerry_release_value(reg_function); - return is_ok; - } + bool is_ok = true; - jerry_value_t jerry_name = jerry_create_string((jerry_char_t *) name); + if (!(jerry_value_is_function (reg_function) && jerry_value_is_constructor (reg_function))) + { + is_ok = false; + LOG_PRINT_ALWAYS ("Error: jerry_function_external failed!\r\n"); + jerry_value_free (global_object_val); + jerry_value_free (reg_function); + return is_ok; + } + + if (jerry_value_is_exception (reg_function)) + { + is_ok = false; + LOG_PRINT_ALWAYS ("Error: jerry_function_external has error flag! \r\n"); + jerry_value_free (global_object_val); + jerry_value_free (reg_function); + return is_ok; + } - jerry_value_t set_result = jerry_set_property(global_object_val, jerry_name, reg_function); + jerry_value_t jerry_name = jerry_string_sz (name); + jerry_value_t set_result = jerry_object_set (global_object_val, jerry_name, reg_function); - if (jerry_value_is_error(set_result)) { - is_ok = false; - LOG_PRINT_ALWAYS("Error: jerry_create_external_function failed: [%s]\r\n", name); - } + if (jerry_value_is_exception (set_result)) + { + is_ok = false; + LOG_PRINT_ALWAYS ("Error: jerry_function_external failed: [%s]\r\n", name); + } - jerry_release_value(jerry_name); - jerry_release_value(global_object_val); - jerry_release_value(reg_function); - jerry_release_value(set_result); + jerry_value_free (jerry_name); + jerry_value_free (global_object_val); + jerry_value_free (reg_function); + jerry_value_free (set_result); - return is_ok; + return is_ok; } -bool jsmbed_wrap_register_class_constructor(const char* name, jerry_external_handler_t handler) { - // Register class constructor as a global function - return jsmbed_wrap_register_global_function(name, handler); +bool +jsmbed_wrap_register_class_constructor (const char* name, jerry_external_handler_t handler) +{ + // Register class constructor as a global function + return jsmbed_wrap_register_global_function (name, handler); } -bool jsmbed_wrap_register_class_function(jerry_value_t this_obj, const char* name, jerry_external_handler_t handler) { - jerry_value_t property_name = jerry_create_string(reinterpret_cast<const jerry_char_t *>(name)); - jerry_value_t handler_obj = jerry_create_external_function(handler); +bool +jsmbed_wrap_register_class_function (jerry_value_t this_obj, const char* name, jerry_external_handler_t handler) +{ + jerry_value_t property_name = jerry_string_sz (name); + jerry_value_t handler_obj = jerry_function_external (handler); - jerry_release_value(jerry_set_property(this_obj, property_name, handler_obj)); + jerry_value_free (jerry_object_set (this_obj, property_name, handler_obj)); - jerry_release_value(handler_obj); - jerry_release_value(property_name); + jerry_value_free (handler_obj); + jerry_value_free (property_name); - // TODO: check for errors, and return false in the case of errors - return true; + // TODO: check for errors, and return false in the case of errors + return true; } |