diff options
author | Zoltan Herczeg <zherczeg.u-szeged@partner.samsung.com> | 2016-08-09 05:34:16 -0700 |
---|---|---|
committer | Zoltan Herczeg <zherczeg.u-szeged@partner.samsung.com> | 2016-08-14 23:20:50 -0700 |
commit | ae1118293f19c28376913980d077ab7066860e7c (patch) | |
tree | 93a7d2f74b9740335cee5f828d94675e1d36fa88 | |
parent | b6f174cce76b4091da2be2fff3d550e63135920c (diff) |
Add two new API functions: jerry_create_number_infinity and jerry_create_number_nan
JerryScript-DCO-1.0-Signed-off-by: Zoltan Herczeg zherczeg.u-szeged@partner.samsung.com
-rw-r--r-- | docs/02.API-REFERENCE.md | 71 | ||||
-rw-r--r-- | jerry-core/jerry-api.h | 2 | ||||
-rw-r--r-- | jerry-core/jerry.c | 33 | ||||
-rw-r--r-- | tests/unit/test-api.c | 19 |
4 files changed, 124 insertions, 1 deletions
diff --git a/docs/02.API-REFERENCE.md b/docs/02.API-REFERENCE.md index e8e75b17..02c6ad30 100644 --- a/docs/02.API-REFERENCE.md +++ b/docs/02.API-REFERENCE.md @@ -1758,6 +1758,77 @@ jerry_create_number (double value); **See also** - [jerry_release_value](#jerry_release_value) +- [jerry_create_number_infinity](#jerry_create_number_infinity) +- [jerry_create_number_nan](#jerry_create_number_nan) + + +## jerry_create_number_infinity + +**Summary** + +Creates a `jerry_value_t` representing a positive or negative infinity value. + +**Prototype** + +```c +jerry_value_t +jerry_create_number_infinity (bool sign); +``` + +- `sign` - true for negative Infinity and false for positive Infinity +- return value - a `jerry_value_t` representing the infinity value + +**Example** + +```c +{ + jerry_value_t positive_inf_value = jerry_create_number_infinity (false); + + ... // usage of the positive_inf_value + + jerry_release_value (positive_inf_value); +} +``` + +**See also** + +- [jerry_release_value](#jerry_release_value) +- [jerry_create_number](#jerry_create_number) +- [jerry_create_number_nan](#jerry_create_number_nan) + + +## jerry_create_number_nan + +**Summary** + +Creates a `jerry_value_t` representing a not-a-number value. + +**Prototype** + +```c +jerry_value_t +jerry_create_number_nan (void); +``` + +- return value - a `jerry_value_t` representing the not-a-number value + +**Example** + +```c +{ + jerry_value_t nan_value = jerry_create_number_nan (); + + ... // usage of the nan_value + + jerry_release_value (nan_value); +} +``` + +**See also** + +- [jerry_release_value](#jerry_release_value) +- [jerry_create_number](#jerry_create_number) +- [jerry_create_number_infinity](#jerry_create_number_infinity) ## jerry_create_null diff --git a/jerry-core/jerry-api.h b/jerry-core/jerry-api.h index 1ff73628..db417e62 100644 --- a/jerry-core/jerry-api.h +++ b/jerry-core/jerry-api.h @@ -244,6 +244,8 @@ jerry_value_t jerry_create_error (jerry_error_t, const jerry_char_t *); jerry_value_t jerry_create_error_sz (jerry_error_t, const jerry_char_t *, jerry_size_t); jerry_value_t jerry_create_external_function (jerry_external_handler_t); jerry_value_t jerry_create_number (double); +jerry_value_t jerry_create_number_infinity (bool); +jerry_value_t jerry_create_number_nan (void); jerry_value_t jerry_create_null (void); jerry_value_t jerry_create_object (void); jerry_value_t jerry_create_string (const jerry_char_t *); diff --git a/jerry-core/jerry.c b/jerry-core/jerry.c index b0bdbbb2..6a3938e7 100644 --- a/jerry-core/jerry.c +++ b/jerry-core/jerry.c @@ -854,6 +854,39 @@ jerry_create_number (double value) /**< double value from which a jerry_value_t } /* jerry_create_number */ /** + * Creates a jerry_value_t representing a positive or negative infinity value. + * + * Note: + * returned value must be freed with jerry_release_value, when it is no longer needed. + * + * @return jerry_value_t representing an infinity value. + */ +jerry_value_t +jerry_create_number_infinity (bool sign) /**< true for negative Infinity + * false for positive Infinity */ +{ + jerry_assert_api_available (); + + return ecma_make_number_value (ecma_number_make_infinity (sign)); +} /* jerry_create_number_infinity */ + +/** + * Creates a jerry_value_t representing a not-a-number value. + * + * Note: + * returned value must be freed with jerry_release_value, when it is no longer needed. + * + * @return jerry_value_t representing a not-a-number value. + */ +jerry_value_t +jerry_create_number_nan (void) +{ + jerry_assert_api_available (); + + return ecma_make_nan_value (); +} /* jerry_create_number_nan */ + +/** * Creates and returns a jerry_value_t with type null object. * * @return jerry_value_t representing null diff --git a/tests/unit/test-api.c b/tests/unit/test-api.c index 442b13d4..412fee78 100644 --- a/tests/unit/test-api.c +++ b/tests/unit/test-api.c @@ -309,6 +309,7 @@ main (void) jerry_value_t throw_test_handler_val; jerry_value_t parsed_code_val, proto_val, prim_val; jerry_value_t res, args[2]; + double number_val; char buffer[32]; is_ok = test_run_simple ("print ('Hello, World!');"); @@ -700,9 +701,25 @@ main (void) // cleanup. jerry_release_value (global_obj_val); - // TEST: run gc. + // Test: run gc. jerry_gc (); + // Test: number + val_t = jerry_create_number (6.25); + number_val = jerry_get_number_value (val_t); + TEST_ASSERT (number_val * 3 == 18.75); + jerry_release_value (val_t); + + val_t = jerry_create_number_infinity (true); + number_val = jerry_get_number_value (val_t); + TEST_ASSERT (number_val * 3 == number_val && number_val != 0.0); + jerry_release_value (val_t); + + val_t = jerry_create_number_nan (); + number_val = jerry_get_number_value (val_t); + TEST_ASSERT (number_val != number_val); + jerry_release_value (val_t); + jerry_cleanup (); TEST_ASSERT (test_api_is_free_callback_was_called); |