mirror of
https://github.com/jerryscript-project/jerryscript.git
synced 2025-12-15 16:29:21 +00:00
Extern keywords on function declarations/definitions provide no additional value since function declarations/definitions default to external linkage in C99, e.g. removing them won't change the semantics of the program. The extern keywords were essentially a legacy from the early days of the project. This commit cleans this up across the whole codebase in one go to minimize history disruption. The bulk of the changes in this commit were produced by a custom clang-tidy checker. Note that variables declarations carrying the extern keyword are untouched by this commit since there the presence of the keyword actually has an impact on the semantics of the program. JerryScript-DCO-1.0-Signed-off-by: Tilmann Scheller t.scheller@samsung.com
176 lines
6.1 KiB
C
176 lines
6.1 KiB
C
/* Copyright JS Foundation and other contributors, http://js.foundation
|
|
*
|
|
* 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.
|
|
*/
|
|
|
|
#ifndef ECMA_BUILTIN_HELPERS_H
|
|
#define ECMA_BUILTIN_HELPERS_H
|
|
|
|
#include "ecma-globals.h"
|
|
#include "ecma-exceptions.h"
|
|
|
|
/** \addtogroup ecma ECMA
|
|
* @{
|
|
*
|
|
* \addtogroup ecmabuiltinhelpers ECMA builtin helper operations
|
|
* @{
|
|
*/
|
|
|
|
ecma_value_t
|
|
ecma_builtin_helper_object_to_string (const ecma_value_t);
|
|
ecma_value_t
|
|
ecma_builtin_helper_get_to_locale_string_at_index (ecma_object_t *, uint32_t);
|
|
ecma_value_t
|
|
ecma_builtin_helper_object_get_properties (ecma_object_t *, bool);
|
|
ecma_value_t
|
|
ecma_builtin_helper_array_concat_value (ecma_object_t *, uint32_t *, ecma_value_t);
|
|
uint32_t
|
|
ecma_builtin_helper_array_index_normalize (ecma_number_t, uint32_t);
|
|
uint32_t
|
|
ecma_builtin_helper_string_index_normalize (ecma_number_t, uint32_t, bool);
|
|
ecma_value_t
|
|
ecma_builtin_helper_string_prototype_object_index_of (ecma_value_t, ecma_value_t,
|
|
ecma_value_t, bool);
|
|
bool
|
|
ecma_builtin_helper_string_find_index (ecma_string_t *, ecma_string_t *, bool, ecma_length_t, ecma_length_t *);
|
|
ecma_value_t
|
|
ecma_builtin_helper_def_prop (ecma_object_t *, ecma_string_t *, ecma_value_t,
|
|
bool, bool, bool, bool);
|
|
|
|
#ifndef CONFIG_DISABLE_DATE_BUILTIN
|
|
|
|
/**
|
|
* Time range defines for helper functions.
|
|
*
|
|
* See also:
|
|
* ECMA-262 v5, 15.9.1.1, 15.9.1.10
|
|
*/
|
|
|
|
/** Hours in a day. */
|
|
#define ECMA_DATE_HOURS_PER_DAY ((ecma_number_t) 24)
|
|
|
|
/** Minutes in an hour. */
|
|
#define ECMA_DATE_MINUTES_PER_HOUR ((ecma_number_t) 60)
|
|
|
|
/** Seconds in a minute. */
|
|
#define ECMA_DATE_SECONDS_PER_MINUTE ((ecma_number_t) 60)
|
|
|
|
/** Milliseconds in a second. */
|
|
#define ECMA_DATE_MS_PER_SECOND ((ecma_number_t) 1000)
|
|
|
|
/** ECMA_DATE_MS_PER_MINUTE == 60000 */
|
|
#define ECMA_DATE_MS_PER_MINUTE (ECMA_DATE_MS_PER_SECOND * ECMA_DATE_SECONDS_PER_MINUTE)
|
|
|
|
/** ECMA_DATE_MS_PER_HOUR == 3600000 */
|
|
#define ECMA_DATE_MS_PER_HOUR (ECMA_DATE_MS_PER_MINUTE * ECMA_DATE_MINUTES_PER_HOUR)
|
|
|
|
/** ECMA_DATE_MS_PER_DAY == 86400000 */
|
|
#define ECMA_DATE_MS_PER_DAY (ECMA_DATE_MS_PER_HOUR * ECMA_DATE_HOURS_PER_DAY)
|
|
|
|
/**
|
|
* This gives a range of 8,640,000,000,000,000 milliseconds
|
|
* to either side of 01 January, 1970 UTC.
|
|
*/
|
|
#define ECMA_DATE_MAX_VALUE 8.64e15
|
|
|
|
/**
|
|
* Timezone type.
|
|
*/
|
|
typedef enum
|
|
{
|
|
ECMA_DATE_UTC, /**< date vaule is in UTC */
|
|
ECMA_DATE_LOCAL /**< date vaule is in local time */
|
|
} ecma_date_timezone_t;
|
|
|
|
/* ecma-builtin-helpers-date.c */
|
|
ecma_number_t ecma_date_day (ecma_number_t);
|
|
ecma_number_t ecma_date_time_within_day (ecma_number_t);
|
|
ecma_number_t ecma_date_days_in_year (ecma_number_t);
|
|
ecma_number_t ecma_date_day_from_year (ecma_number_t);
|
|
ecma_number_t ecma_date_time_from_year (ecma_number_t);
|
|
ecma_number_t ecma_date_year_from_time (ecma_number_t);
|
|
ecma_number_t ecma_date_in_leap_year (ecma_number_t);
|
|
ecma_number_t ecma_date_day_within_year (ecma_number_t);
|
|
ecma_number_t ecma_date_month_from_time (ecma_number_t);
|
|
ecma_number_t ecma_date_date_from_time (ecma_number_t);
|
|
ecma_number_t ecma_date_week_day (ecma_number_t);
|
|
ecma_number_t ecma_date_local_tza ();
|
|
ecma_number_t ecma_date_daylight_saving_ta (ecma_number_t);
|
|
ecma_number_t ecma_date_local_time (ecma_number_t);
|
|
ecma_number_t ecma_date_utc (ecma_number_t);
|
|
ecma_number_t ecma_date_hour_from_time (ecma_number_t);
|
|
ecma_number_t ecma_date_min_from_time (ecma_number_t);
|
|
ecma_number_t ecma_date_sec_from_time (ecma_number_t);
|
|
ecma_number_t ecma_date_ms_from_time (ecma_number_t);
|
|
ecma_number_t ecma_date_make_time (ecma_number_t, ecma_number_t, ecma_number_t, ecma_number_t);
|
|
ecma_number_t ecma_date_make_day (ecma_number_t, ecma_number_t, ecma_number_t);
|
|
ecma_number_t ecma_date_make_date (ecma_number_t, ecma_number_t);
|
|
ecma_number_t ecma_date_time_clip (ecma_number_t);
|
|
ecma_number_t ecma_date_timezone_offset (ecma_number_t);
|
|
|
|
ecma_value_t ecma_date_value_to_string (ecma_number_t);
|
|
ecma_value_t ecma_date_value_to_utc_string (ecma_number_t);
|
|
ecma_value_t ecma_date_value_to_iso_string (ecma_number_t);
|
|
ecma_value_t ecma_date_value_to_date_string (ecma_number_t);
|
|
ecma_value_t ecma_date_value_to_time_string (ecma_number_t);
|
|
|
|
#endif /* !CONFIG_DISABLE_DATE_BUILTIN */
|
|
|
|
/* ecma-builtin-helper-json.c */
|
|
|
|
/**
|
|
* Context for JSON.stringify()
|
|
*/
|
|
typedef struct
|
|
{
|
|
/** Collection for property keys. */
|
|
ecma_collection_header_t *property_list_p;
|
|
|
|
/** Collection for traversing objects. */
|
|
ecma_collection_header_t *occurence_stack_p;
|
|
|
|
/** The actual indentation text. */
|
|
ecma_string_t *indent_str_p;
|
|
|
|
/** The indentation text. */
|
|
ecma_string_t *gap_str_p;
|
|
|
|
/** The replacer function. */
|
|
ecma_object_t *replacer_function_p;
|
|
} ecma_json_stringify_context_t;
|
|
|
|
bool ecma_has_object_value_in_collection (ecma_collection_header_t *, ecma_value_t);
|
|
bool ecma_has_string_value_in_collection (ecma_collection_header_t *, ecma_value_t);
|
|
|
|
ecma_string_t *
|
|
ecma_builtin_helper_json_create_hex_digit_ecma_string (uint8_t);
|
|
ecma_string_t *
|
|
ecma_builtin_helper_json_create_separated_properties (ecma_collection_header_t *, ecma_string_t *);
|
|
ecma_value_t
|
|
ecma_builtin_helper_json_create_formatted_json (ecma_string_t *, ecma_string_t *, ecma_string_t *,
|
|
ecma_collection_header_t *, ecma_json_stringify_context_t *);
|
|
ecma_value_t
|
|
ecma_builtin_helper_json_create_non_formatted_json (ecma_string_t *, ecma_string_t *, ecma_collection_header_t *);
|
|
|
|
/* ecma-builtin-helper-error.c */
|
|
|
|
ecma_value_t
|
|
ecma_builtin_helper_error_dispatch_call (ecma_standard_error_t, const ecma_value_t *, ecma_length_t);
|
|
|
|
/**
|
|
* @}
|
|
* @}
|
|
*/
|
|
|
|
#endif /* !ECMA_BUILTIN_HELPERS_H */
|