mirror of
https://github.com/google/pebble.git
synced 2025-06-07 02:33:12 +00:00
Import of the watch repository from Pebble
This commit is contained in:
commit
3b92768480
10334 changed files with 2564465 additions and 0 deletions
111
src/fw/applib/rockyjs/api/rocky_api_util.h
Normal file
111
src/fw/applib/rockyjs/api/rocky_api_util.h
Normal file
|
@ -0,0 +1,111 @@
|
|||
/*
|
||||
* Copyright 2024 Google LLC
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "jerry-api.h"
|
||||
#include "util/macro.h"
|
||||
#include "util/time/time.h"
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
|
||||
// Create a const jerry value that will be released when it goes out of scope
|
||||
#define JS_VAR const jerry_value_t __attribute__((cleanup(rocky_cleanup_js_var)))
|
||||
|
||||
// Create a temporary jerry value with a unique name that will be released when it goes out of scope
|
||||
#define JS_UNUSED_VAL \
|
||||
const jerry_value_t __attribute__((unused,cleanup(rocky_cleanup_js_var))) MACRO_CONCAT(js, __COUNTER__)
|
||||
|
||||
void rocky_cleanup_js_var(const jerry_value_t *var);
|
||||
|
||||
uintptr_t rocky_util_uint_from_value(const jerry_value_t value);
|
||||
|
||||
//! Note: you need to free the return value explicitly
|
||||
char *rocky_string_alloc_and_copy(const jerry_value_t string);
|
||||
|
||||
void rocky_log_exception(const char *message, jerry_value_t exception);
|
||||
|
||||
#define ROCKY_RETURN_IF_ERROR(expr) \
|
||||
do { \
|
||||
const jerry_value_t rv = (expr); \
|
||||
if (jerry_value_has_error_flag(rv)) { \
|
||||
return rv; \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#define JERRY_FUNCTION(name) static jerry_value_t name(const jerry_value_t function_obj_p, \
|
||||
const jerry_value_t this_val, \
|
||||
const jerry_value_t argv[], \
|
||||
const jerry_length_t argc)
|
||||
|
||||
void jerry_set_object_field(jerry_value_t object, const char *field, jerry_value_t value);
|
||||
jerry_value_t jerry_get_object_field(jerry_value_t object, const char *field);
|
||||
jerry_value_t jerry_get_object_getter_result(jerry_value_t object, const char *getter_name);
|
||||
|
||||
bool rocky_add_function(jerry_value_t parent, char *name, jerry_external_handler_t handler);
|
||||
bool rocky_add_global_function(char *name, jerry_external_handler_t handler);
|
||||
|
||||
//! Adds a constructor function object to rocky.name (it sets up the prototype of the function
|
||||
//! which JerryScript normally does not do for external functions).
|
||||
//! @return the prototype object
|
||||
jerry_value_t rocky_add_constructor(char *name, jerry_external_handler_t handler);
|
||||
|
||||
// Creates an object using a global constructor, in other words: `new constructor_name(args)`
|
||||
jerry_value_t rocky_create_with_constructor(const char *rocky_constructor_name,
|
||||
const jerry_value_t args_p[],
|
||||
jerry_size_t args_count);
|
||||
|
||||
// does rounding to avoid Math.sin(2*Math.PI) issues and related problems
|
||||
int32_t jerry_get_int32_value(jerry_value_t value);
|
||||
|
||||
// converts JS angle (0 degrees at 3 o'clock, 360 degrees = 2 * PI)
|
||||
// to Pebble angle (0 degrees at 12 o'clock, 360 degrees = TRIG_MAX_ANGLE)
|
||||
int32_t jerry_get_angle_value(jerry_value_t value);
|
||||
|
||||
typedef jerry_value_t (*RockyObjectCreatorFunc)(void *data);
|
||||
|
||||
// implementations of RockyObjectCreatorFunc for convenience of rocky_get_or_create_object
|
||||
// these functions simply ignore the parameter
|
||||
jerry_value_t rocky_creator_object(void *ignore);
|
||||
jerry_value_t rocky_creator_empty_array(void *ignore);
|
||||
|
||||
jerry_value_t rocky_get_or_create_object(jerry_value_t parent, const char *name,
|
||||
RockyObjectCreatorFunc creator_func, void *data,
|
||||
bool *was_created);
|
||||
|
||||
// True, if jerry value represents a string that is equal to a given char buffer
|
||||
bool rocky_str_equal(jerry_value_t str_js, const char *str);
|
||||
|
||||
void rocky_set_rocky_singleton(jerry_value_t v);
|
||||
|
||||
// caller needs to call jerry_release_value() on return value
|
||||
jerry_value_t rocky_get_rocky_singleton(void);
|
||||
|
||||
void rocky_delete_singleton(void);
|
||||
|
||||
void rocky_define_property(jerry_value_t parent, const char *prop_name,
|
||||
jerry_external_handler_t getter,
|
||||
jerry_external_handler_t setter);
|
||||
|
||||
void rocky_util_eval_and_log_uncaught_error(const jerry_char_t *source_p, size_t source_size);
|
||||
|
||||
void rocky_util_call_user_function_and_log_uncaught_error(const jerry_value_t func_obj_val,
|
||||
const jerry_value_t this_val,
|
||||
const jerry_value_t args_p[],
|
||||
jerry_size_t args_count);
|
||||
|
||||
jerry_value_t rocky_util_create_date(struct tm *tick_time);
|
Loading…
Add table
Add a link
Reference in a new issue