gawk-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[gawk-diffs] [SCM] gawk branch, extgawk, updated. dda2495337929a86cc4001


From: Andrew J. Schorr
Subject: [gawk-diffs] [SCM] gawk branch, extgawk, updated. dda2495337929a86cc40017d8f1cd72a46876618
Date: Thu, 12 Jul 2012 13:25:30 +0000

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "gawk".

The branch, extgawk has been updated
       via  dda2495337929a86cc40017d8f1cd72a46876618 (commit)
      from  64fecd1d7a14c23fbbd6938e237c66a31fabb04f (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://git.sv.gnu.org/cgit/gawk.git/commit/?id=dda2495337929a86cc40017d8f1cd72a46876618

commit dda2495337929a86cc40017d8f1cd72a46876618
Author: Andrew J. Schorr <address@hidden>
Date:   Thu Jul 12 09:24:55 2012 -0400

    Add sym_lookup_scalar to API for fast scalar_cookie value retrieval.

diff --git a/ChangeLog b/ChangeLog
index 44793ba..04bd15d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,16 @@
 2012-07-11         Andrew J. Schorr     <address@hidden>
 
+       * gawkapi.h: Fix typo in comment.
+       (awk_value_t): Type for scalar_cookie should be awk_scalar_t,
+       not awk_array_t.
+       (gawk_api): Add new api_sym_lookup_scalar function.
+       (sym_lookup_scalar): New wrapper macro for api_sym_lookup_scalar hook.
+       * gawkapi.c (api_sym_lookup_scalar): New function for faster scalar
+       lookup.
+       (api_impl): Add entry for api_sym_lookup_scalar.
+
+2012-07-11         Andrew J. Schorr     <address@hidden>
+
        * gawkapi.c (awk_value_to_node): Change to a switch statement
        so AWK_SCALAR or other invalid type is handled properly.
        (valid_subscript_type): Test whether a value type is acceptable
diff --git a/gawkapi.c b/gawkapi.c
index 9e4f731..b6d83ac 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,
 
diff --git a/gawkapi.h b/gawkapi.h
index 9f541cf..50ca327 100644
--- a/gawkapi.h
+++ b/gawkapi.h
@@ -34,7 +34,7 @@
 /*
  * General introduction:
  *
- * This API purposely restricts itself to C90 features.  In paticular, no
+ * This API purposely restricts itself to C90 features.  In particular, no
  * bool, no // comments, no use of the restrict keyword, or anything else,
  * in order to provide maximal portability.
  * 
@@ -122,7 +122,7 @@ typedef struct {
                awk_string_t    s;
                double          d;
                awk_array_t     a;
-               awk_array_t     scl;
+               awk_scalar_t    scl;
        } u;
 #define str_value      u.s
 #define num_value      u.d
@@ -317,6 +317,18 @@ typedef struct gawk_api {
                                awk_value_t *result);
 
        /*
+        * Retrieve the current value of a scalar cookie.  Once
+        * you have obtained a saclar_cookie using sym_lookup, you can
+        * use this function to get its value more efficiently.
+        *
+        * Return will be false if the value cannot be retrieved.
+        */
+       awk_bool_t (*api_sym_lookup_scalar)(awk_ext_id_t id,
+                               awk_scalar_t cookie,
+                               awk_valtype_t wanted,
+                               awk_value_t *result);
+
+       /*
         * Update a value. Adds it to the symbol table if not there.
         * Changing types (scalar <--> array) is not allowed.
         * In fact, using this to update an array is not allowed, either.
@@ -427,7 +439,10 @@ typedef struct gawk_api {
 #define add_ext_func(func, ns) (api->api_add_ext_func(ext_id, func, ns))
 #define awk_atexit(funcp, arg0)        (api->api_awk_atexit(ext_id, funcp, 
arg0))
 
-#define sym_lookup(name, wanted, result)       (api->api_sym_lookup(ext_id, 
name, wanted, result))
+#define sym_lookup(name, wanted, result) \
+       (api->api_sym_lookup(ext_id, name, wanted, result))
+#define sym_lookup_scalar(scalar_cookie, wanted, result) \
+       (api->api_sym_lookup_scalar(ext_id, scalar_cookie, wanted, result))
 #define sym_update(name, value) \
        (api->api_sym_update(ext_id, name, value))
 #define sym_update_scalar(scalar_cookie, value) \

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog |   11 +++++++++++
 gawkapi.c |   19 +++++++++++++++++++
 gawkapi.h |   21 ++++++++++++++++++---
 3 files changed, 48 insertions(+), 3 deletions(-)


hooks/post-receive
-- 
gawk



reply via email to

[Prev in Thread] Current Thread [Next in Thread]