[Groonga-commit] groonga/groonga at 94c559a [master] grn_ts: add buffers to grn_ts_expr_op_node

Back to archive index

susumu.yata null+****@clear*****
Wed Sep 9 12:24:37 JST 2015


susumu.yata	2015-09-09 12:24:37 +0900 (Wed, 09 Sep 2015)

  New Revision: 94c559aa2ffdbf2afa8272005b95d771b0185aef
  https://github.com/groonga/groonga/commit/94c559aa2ffdbf2afa8272005b95d771b0185aef

  Message:
    grn_ts: add buffers to grn_ts_expr_op_node
    
    GitHub: #385

  Modified files:
    lib/ts.c

  Modified: lib/ts.c (+16 -13)
===================================================================
--- lib/ts.c    2015-09-09 12:21:45 +0900 (129845d)
+++ lib/ts.c    2015-09-09 12:24:37 +0900 (2a1d4e9)
@@ -1885,7 +1885,8 @@ grn_ts_expr_column_node_adjust(grn_ctx *ctx, grn_ts_expr_column_node *node,
  */
 
 enum {
-  GRN_TS_EXPR_OP_NODE_MAX_N_ARGS = 3
+  GRN_TS_EXPR_OP_NODE_MAX_N_ARGS = 3,
+  GRN_TS_EXPR_OP_NODE_N_BUFS = 3
 };
 
 /* Forward declarations. */
@@ -1903,8 +1904,7 @@ typedef struct {
   grn_ts_op_type op_type;
   grn_ts_expr_node *args[GRN_TS_EXPR_OP_NODE_MAX_N_ARGS];
   size_t n_args;
-  grn_ts_buf buf;
-  // TODO: More buffers.
+  grn_ts_buf bufs[GRN_TS_EXPR_OP_NODE_N_BUFS];
 } grn_ts_expr_op_node;
 
 /* grn_ts_expr_op_node_init() initializes a node. */
@@ -1916,15 +1916,18 @@ grn_ts_expr_op_node_init(grn_ctx *ctx, grn_ts_expr_op_node *node) {
   for (i = 0; i < GRN_TS_EXPR_OP_NODE_MAX_N_ARGS; i++) {
     node->args[i] = NULL;
   }
-  grn_ts_buf_init(ctx, &node->buf);
-  // TODO: Initialize buffers.
+  for (i = 0; i < GRN_TS_EXPR_OP_NODE_N_BUFS; i++) {
+    grn_ts_buf_init(ctx, &node->bufs[0]);
+  }
 }
 
 /* grn_ts_expr_op_node_fin() finalizes a node. */
 static void
 grn_ts_expr_op_node_fin(grn_ctx *ctx, grn_ts_expr_op_node *node) {
-  // TODO: Finalize buffers.
-  grn_ts_buf_fin(ctx, &node->buf);
+  size_t i;
+  for (i = 0; i < GRN_TS_EXPR_OP_NODE_N_BUFS; i++) {
+    grn_ts_buf_fin(ctx, &node->bufs[i]);
+  }
 }
 
 /* grn_ts_expr_op_node_open() creates a node associated with an operator. */
@@ -2020,11 +2023,11 @@ grn_ts_op_logical_and_evaluate(grn_ctx *ctx, grn_ts_expr_op_node *node,
   if (rc != GRN_SUCCESS) {
     return rc;
   }
-  rc = grn_ts_buf_reserve(ctx, &node->buf, sizeof(grn_ts_bool) * n_in);
+  rc = grn_ts_buf_reserve(ctx, &node->bufs[0], sizeof(grn_ts_bool) * n_in);
   if (rc != GRN_SUCCESS) {
     return rc;
   }
-  buf_ptr = (grn_ts_bool *)node->buf.ptr;
+  buf_ptr = (grn_ts_bool *)node->bufs[0].ptr;
   rc = grn_ts_expr_node_evaluate(ctx, node->args[1], in, n_in, buf_ptr);
   if (rc != GRN_SUCCESS) {
     return rc;
@@ -2047,11 +2050,11 @@ grn_ts_op_logical_or_evaluate(grn_ctx *ctx, grn_ts_expr_op_node *node,
   if (rc != GRN_SUCCESS) {
     return rc;
   }
-  rc = grn_ts_buf_reserve(ctx, &node->buf, sizeof(grn_ts_bool) * n_in);
+  rc = grn_ts_buf_reserve(ctx, &node->bufs[0], sizeof(grn_ts_bool) * n_in);
   if (rc != GRN_SUCCESS) {
     return rc;
   }
-  buf_ptr = (grn_ts_bool *)node->buf.ptr;
+  buf_ptr = (grn_ts_bool *)node->bufs[0].ptr;
   rc = grn_ts_expr_node_evaluate(ctx, node->args[1], in, n_in, buf_ptr);
   if (rc != GRN_SUCCESS) {
     return rc;
@@ -2092,11 +2095,11 @@ grn_ts_op_logical_not_filter(grn_ctx *ctx, grn_ts_expr_op_node *node,
   size_t i, count;
   grn_rc rc;
   grn_ts_bool *buf_ptr;
-  rc = grn_ts_buf_reserve(ctx, &node->buf, sizeof(grn_ts_bool) * n_in);
+  rc = grn_ts_buf_reserve(ctx, &node->bufs[0], sizeof(grn_ts_bool) * n_in);
   if (rc != GRN_SUCCESS) {
     return rc;
   }
-  buf_ptr = (grn_ts_bool *)node->buf.ptr;
+  buf_ptr = (grn_ts_bool *)node->bufs[0].ptr;
   rc = grn_ts_expr_node_evaluate(ctx, node->args[0], in, n_in, buf_ptr);
   if (rc != GRN_SUCCESS) {
     return rc;
-------------- next part --------------
HTML����������������������������...
Download 



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