[Groonga-commit] groonga/groonga at 572d116 [master] grn_ts: add a stack to grn_ts_expr_parser

Back to archive index

susumu.yata null+****@clear*****
Thu Sep 17 18:20:09 JST 2015


susumu.yata	2015-09-17 18:20:09 +0900 (Thu, 17 Sep 2015)

  New Revision: 572d116264664a6d7932ac631176a64bbec41d23
  https://github.com/groonga/groonga/commit/572d116264664a6d7932ac631176a64bbec41d23

  Message:
    grn_ts: add a stack to grn_ts_expr_parser
    
    GitHub: #400

  Modified files:
    lib/ts.c

  Modified: lib/ts.c (+7 -0)
===================================================================
--- lib/ts.c    2015-09-17 18:10:08 +0900 (9f7e0a9)
+++ lib/ts.c    2015-09-17 18:20:09 +0900 (6cc4fe5)
@@ -3856,6 +3856,9 @@ typedef struct {
   grn_ts_expr_token **tokens; /* Tokens. */
   size_t n_tokens;            /* Number of tokens. */
   size_t max_n_tokens;        /* Max. number (capacity) of tokens. */
+  grn_ts_expr_token **stack;  /* Token stack. */
+  size_t stack_depth;         /* Token stack's current depth. */
+  size_t stack_size;          /* Token stack's size (capacity). */
 } grn_ts_expr_parser;
 
 #define GRN_TS_EXPR_TOKEN_INIT(TYPE)\
@@ -4051,11 +4054,15 @@ grn_ts_expr_parser_init(grn_ctx *ctx, grn_ts_expr *expr,
   memset(parser, 0, sizeof(*parser));
   parser->expr = expr;
   parser->tokens = NULL;
+  parser->stack = NULL;
 }
 
 /* grn_ts_expr_parser_fin() finalizes a parser. */
 static void
 grn_ts_expr_parser_fin(grn_ctx *ctx, grn_ts_expr_parser *parser) {
+  if (parser->stack) {
+    GRN_FREE(parser->stack);
+  }
   if (parser->tokens) {
     size_t i;
     for (i = 0; i < parser->n_tokens; i++) {
-------------- next part --------------
HTML����������������������������...
Download 



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