]> git.kaiwu.me - njs.git/commitdiff
Modules: improved generic external getters.
authorDmitry Volyntsev <xeioex@nginx.com>
Sat, 20 Aug 2022 05:02:37 +0000 (22:02 -0700)
committerDmitry Volyntsev <xeioex@nginx.com>
Sat, 20 Aug 2022 05:02:37 +0000 (22:02 -0700)
nginx/ngx_js.c
nginx/ngx_js.h
nginx/ngx_js_fetch.c

index 19a5b74b1b597f26e213a691644dc7915e435455..534232f4c82a5d593f4f06c12af93af31df2e66f 100644 (file)
@@ -34,6 +34,7 @@ static njs_external_t  ngx_js_ext_core[] = {
         .u.property = {
             .handler = ngx_js_ext_constant,
             .magic32 = NGX_LOG_INFO,
+            .magic16 = NGX_JS_NUMBER,
         }
     },
 
@@ -43,6 +44,7 @@ static njs_external_t  ngx_js_ext_core[] = {
         .u.property = {
             .handler = ngx_js_ext_constant,
             .magic32 = NGX_LOG_WARN,
+            .magic16 = NGX_JS_NUMBER,
         }
     },
 
@@ -52,6 +54,7 @@ static njs_external_t  ngx_js_ext_core[] = {
         .u.property = {
             .handler = ngx_js_ext_constant,
             .magic32 = NGX_LOG_ERR,
+            .magic16 = NGX_JS_NUMBER,
         }
     },
 
@@ -256,7 +259,20 @@ njs_int_t
 ngx_js_ext_constant(njs_vm_t *vm, njs_object_prop_t *prop,
     njs_value_t *value, njs_value_t *setval, njs_value_t *retval)
 {
-    njs_value_number_set(retval, njs_vm_prop_magic32(prop));
+    uint32_t  magic32;
+
+    magic32 = njs_vm_prop_magic32(prop);
+
+    switch (njs_vm_prop_magic16(prop)) {
+    case NGX_JS_NUMBER:
+        njs_value_number_set(retval, magic32);
+        break;
+
+    case NGX_JS_BOOLEAN:
+    default:
+        njs_value_boolean_set(retval, magic32);
+        break;
+    }
 
     return NJS_OK;
 }
@@ -287,16 +303,6 @@ ngx_js_ext_flags(njs_vm_t *vm, njs_object_prop_t *prop,
 }
 
 
-njs_int_t
-ngx_js_ext_boolean(njs_vm_t *vm, njs_object_prop_t *prop,
-    njs_value_t *value, njs_value_t *setval, njs_value_t *retval)
-{
-    njs_value_boolean_set(retval, njs_vm_prop_magic32(prop));
-
-    return NJS_OK;
-}
-
-
 njs_int_t
 ngx_js_ext_log(njs_vm_t *vm, njs_value_t *args, njs_uint_t nargs,
     njs_index_t level)
index 93870bc55ef47e0b41f91c9dbeabca1580122ff0..857fa8e0429088396803213cbadfa219c84ec1a9 100644 (file)
@@ -84,8 +84,6 @@ njs_int_t ngx_js_ext_constant(njs_vm_t *vm, njs_object_prop_t *prop,
     njs_value_t *value, njs_value_t *setval, njs_value_t *retval);
 njs_int_t ngx_js_ext_flags(njs_vm_t *vm, njs_object_prop_t *prop,
     njs_value_t *value, njs_value_t *setval, njs_value_t *retval);
-njs_int_t ngx_js_ext_boolean(njs_vm_t *vm, njs_object_prop_t *prop,
-    njs_value_t *value, njs_value_t *setval, njs_value_t *retval);
 
 ngx_int_t ngx_js_core_init(njs_vm_t *vm, ngx_log_t *log);
 
index 97de91677e3f9e53fb88b609370b626a079a3dd4..34059ddd94324252419dff50797efbc69fd448ca 100644 (file)
@@ -276,8 +276,9 @@ static njs_external_t  ngx_js_ext_http_response[] = {
         .name.string = njs_str("redirected"),
         .enumerable = 1,
         .u.property = {
-            .handler = ngx_js_ext_boolean,
+            .handler = ngx_js_ext_constant,
             .magic32 = 0,
+            .magic16 = NGX_JS_BOOLEAN,
         }
     },