From b76d27fb9e7443798a703b318356088e9619904f Mon Sep 17 00:00:00 2001 From: Dmitry Volyntsev Date: Fri, 19 Oct 2018 20:55:30 +0300 Subject: [PATCH] Added njs_primitive_value_to_number(). --- njs/njs_number.c | 18 ++++++++++++++++++ njs/njs_number.h | 2 ++ 2 files changed, 20 insertions(+) diff --git a/njs/njs_number.c b/njs/njs_number.c index d70d4fc8..ea28e2dc 100644 --- a/njs/njs_number.c +++ b/njs/njs_number.c @@ -63,6 +63,24 @@ njs_value_to_index(const njs_value_t *value) } +double +njs_primitive_value_to_number(const njs_value_t *value) +{ + if (nxt_fast_path(njs_is_numeric(value))) { + return value->data.u.number; + } + + return njs_string_to_number(value, 1); +} + + +uint32_t +njs_primitive_value_to_integer(const njs_value_t *value) +{ + return njs_number_to_integer(njs_primitive_value_to_number(value)); +} + + double njs_number_dec_parse(const u_char **start, const u_char *end) { diff --git a/njs/njs_number.h b/njs/njs_number.h index a651b526..3e940673 100644 --- a/njs/njs_number.h +++ b/njs/njs_number.h @@ -13,6 +13,8 @@ uint32_t njs_value_to_index(const njs_value_t *value); +double njs_primitive_value_to_number(const njs_value_t *value); +uint32_t njs_primitive_value_to_integer(const njs_value_t *value); double njs_number_dec_parse(const u_char **start, const u_char *end); uint64_t njs_number_oct_parse(const u_char **start, const u_char *end); uint64_t njs_number_bin_parse(const u_char **start, const u_char *end); -- 2.47.3