[Groonga-commit] groonga/groonga at e91fb14 [master] grn_ts: simplify grn_ts_expr_node_deref()

Back to archive index

susumu.yata null+****@clear*****
Tue Nov 17 15:44:44 JST 2015


susumu.yata	2015-11-17 15:44:44 +0900 (Tue, 17 Nov 2015)

  New Revision: e91fb149ddccf47555dde730871a082b05d67009
  https://github.com/groonga/groonga/commit/e91fb149ddccf47555dde730871a082b05d67009

  Message:
    grn_ts: simplify grn_ts_expr_node_deref()

  Modified files:
    lib/ts/ts_expr_builder.c
    lib/ts/ts_expr_node.c
    lib/ts/ts_expr_node.h

  Modified: lib/ts/ts_expr_builder.c (+1 -1)
===================================================================
--- lib/ts/ts_expr_builder.c    2015-11-17 15:38:52 +0900 (bd9f6fb)
+++ lib/ts/ts_expr_builder.c    2015-11-17 15:44:44 +0900 (4577ede)
@@ -145,7 +145,7 @@ grn_ts_expr_builder_complete(grn_ctx *ctx, grn_ts_expr_builder *builder,
   if (!builder || (builder->n_nodes != 1) || builder->n_bridges || !expr) {
     GRN_TS_ERR_RETURN(GRN_INVALID_ARGUMENT, "invalid argument");
   }
-  rc = grn_ts_expr_node_deref(ctx, builder->nodes[0], &builder->nodes[0]);
+  rc = grn_ts_expr_node_deref(ctx, &builder->nodes[0]);
   if (rc != GRN_SUCCESS) {
     return rc;
   }

  Modified: lib/ts/ts_expr_node.c (+11 -14)
===================================================================
--- lib/ts/ts_expr_node.c    2015-11-17 15:38:52 +0900 (0a2c512)
+++ lib/ts/ts_expr_node.c    2015-11-17 15:44:44 +0900 (b54bbdf)
@@ -3115,18 +3115,18 @@ grn_ts_expr_op_node_deref_args_for_equal(grn_ctx *ctx,
                       node->n_args);
   }
   if ((node->args[0]->data_kind & ~GRN_TS_VECTOR_FLAG) != GRN_TS_REF) {
-    return grn_ts_expr_node_deref(ctx, node->args[1], &node->args[1]);
+    return grn_ts_expr_node_deref(ctx, &node->args[1]);
   }
   if ((node->args[1]->data_kind & ~GRN_TS_VECTOR_FLAG) != GRN_TS_REF) {
-    return grn_ts_expr_node_deref(ctx, node->args[0], &node->args[0]);
+    return grn_ts_expr_node_deref(ctx, &node->args[0]);
   }
 
   /* FIXME: Arguments should be compared as references if possible. */
-  rc = grn_ts_expr_node_deref(ctx, node->args[0], &node->args[0]);
+  rc = grn_ts_expr_node_deref(ctx, &node->args[0]);
   if (rc != GRN_SUCCESS) {
     return rc;
   }
-  rc = grn_ts_expr_node_deref(ctx, node->args[1], &node->args[1]);
+  rc = grn_ts_expr_node_deref(ctx, &node->args[1]);
   if (rc != GRN_SUCCESS) {
     return rc;
   }
@@ -3146,7 +3146,7 @@ grn_ts_expr_op_node_deref_args(grn_ctx *ctx, grn_ts_expr_op_node *node)
     default: {
       size_t i;
       for (i = 0; i < node->n_args; i++) {
-        grn_rc rc = grn_ts_expr_node_deref(ctx, node->args[i], &node->args[i]);
+        grn_rc rc = grn_ts_expr_node_deref(ctx, &node->args[i]);
         if (rc != GRN_SUCCESS) {
           return rc;
         }
@@ -4756,23 +4756,20 @@ grn_ts_expr_node_deref_once(grn_ctx *ctx, grn_ts_expr_node *in,
 }
 
 grn_rc
-grn_ts_expr_node_deref(grn_ctx *ctx, grn_ts_expr_node *in,
-                       grn_ts_expr_node **out)
+grn_ts_expr_node_deref(grn_ctx *ctx, grn_ts_expr_node **node_ptr)
 {
-  grn_ts_expr_node *node = in, **in_ptr = NULL;
+  grn_ts_expr_node *node = *node_ptr, **in_ptr = NULL;
   while ((node->data_kind & ~GRN_TS_VECTOR_FLAG) == GRN_TS_REF) {
     grn_ts_expr_node *new_node;
     grn_rc rc = grn_ts_expr_node_deref_once(ctx, node, &new_node);
     if (rc != GRN_SUCCESS) {
-      if (node != in) {
-        if (in_ptr) {
-          *in_ptr = NULL;
-        }
+      if (in_ptr) {
+        *in_ptr = NULL;
         grn_ts_expr_node_close(ctx, node);
       }
       return rc;
     }
-    if (node == in) {
+    if (node == *node_ptr) {
       grn_ts_expr_bridge_node *bridge_node;
       bridge_node = (grn_ts_expr_bridge_node *)new_node;
       if (bridge_node->src != node) {
@@ -4782,7 +4779,7 @@ grn_ts_expr_node_deref(grn_ctx *ctx, grn_ts_expr_node *in,
     }
     node = new_node;
   }
-  *out = node;
+  *node_ptr = node;
   return GRN_SUCCESS;
 }
 

  Modified: lib/ts/ts_expr_node.h (+5 -6)
===================================================================
--- lib/ts/ts_expr_node.h    2015-11-17 15:38:52 +0900 (56fbe48)
+++ lib/ts/ts_expr_node.h    2015-11-17 15:44:44 +0900 (2073177)
@@ -97,13 +97,12 @@ void grn_ts_expr_node_close(grn_ctx *ctx, grn_ts_expr_node *node);
 /*
  * grn_ts_expr_node_deref() resolves references.
  *
- * If *in refers to a reference node, grn_ts_expr_node_deref() creates a key
- * node associated with the destination table and creates a bridge node from
- * *in to the key node. If the data kind of the bridge node is GRN_TS_REF,
- * references are recursively resolved.
+ * If *node_ptr refers to a reference node, grn_ts_expr_node_deref() creates a
+ * key node associated with the destination table and creates a bridge node
+ * from *node_ptr to the key node. If the data kind of the bridge node is
+ * GRN_TS_REF, references are recursively resolved.
  */
-grn_rc grn_ts_expr_node_deref(grn_ctx *ctx, grn_ts_expr_node *in,
-                              grn_ts_expr_node **out);
+grn_rc grn_ts_expr_node_deref(grn_ctx *ctx, grn_ts_expr_node **node_ptr);
 
 /* grn_ts_expr_node_evaluate() evaluates a subtree. */
 grn_rc grn_ts_expr_node_evaluate(grn_ctx *ctx, grn_ts_expr_node *node,
-------------- next part --------------
HTML����������������������������...
Télécharger 



More information about the Groonga-commit mailing list
Back to archive index