aboutsummaryrefslogtreecommitdiff
path: root/targets/mbedos5/jerryscript-mbed/jerryscript-mbed-library-registry/source/wrap_tools.cpp
diff options
context:
space:
mode:
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.cpp97
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;
}