aboutsummaryrefslogtreecommitdiffstats
path: root/gawkapi.c
diff options
context:
space:
mode:
authorAndrew J. Schorr <aschorr@telemetry-investments.com>2012-07-12 09:24:55 -0400
committerAndrew J. Schorr <aschorr@telemetry-investments.com>2012-07-12 09:24:55 -0400
commitdda2495337929a86cc40017d8f1cd72a46876618 (patch)
tree629c1a3b7a29a2378660fe361a8d24ced9b52106 /gawkapi.c
parent64fecd1d7a14c23fbbd6938e237c66a31fabb04f (diff)
downloadegawk-dda2495337929a86cc40017d8f1cd72a46876618.tar.gz
egawk-dda2495337929a86cc40017d8f1cd72a46876618.tar.bz2
egawk-dda2495337929a86cc40017d8f1cd72a46876618.zip
Add sym_lookup_scalar to API for fast scalar_cookie value retrieval.
Diffstat (limited to 'gawkapi.c')
-rw-r--r--gawkapi.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/gawkapi.c b/gawkapi.c
index 9e4f731b..b6d83acb 100644
--- a/gawkapi.c
+++ b/gawkapi.c
@@ -442,6 +442,24 @@ api_sym_lookup(awk_ext_id_t id,
return node_to_awk_value(node, result, wanted);
}
+/* api_sym_lookup_scalar --- retrieve the current value of a scalar */
+
+static awk_bool_t
+api_sym_lookup_scalar(awk_ext_id_t id,
+ awk_scalar_t cookie,
+ awk_valtype_t wanted,
+ awk_value_t *result)
+{
+ NODE *node = (NODE *) cookie;
+
+ if (node == NULL
+ || result == NULL
+ || node->type != Node_var)
+ return false;
+
+ return node_to_awk_value(node, result, wanted);
+}
+
/* api_sym_update --- update a symbol's value, see gawkapi.h for semantics */
static awk_bool_t
@@ -844,6 +862,7 @@ gawk_api_t api_impl = {
api_awk_atexit,
api_sym_lookup,
+ api_sym_lookup_scalar,
api_sym_update,
api_sym_update_scalar,