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
This commit is contained in:
Zoltan Herczeg 2016-08-09 05:34:16 -07:00
parent b6f174cce7
commit ae1118293f
4 changed files with 124 additions and 1 deletions

View File

@ -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

View File

@ -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 *);

View File

@ -853,6 +853,39 @@ jerry_create_number (double value) /**< double value from which a jerry_value_t
return ecma_make_number_value ((ecma_number_t) value);
} /* 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.
*

View File

@ -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);