susumu.yata
null+****@clear*****
Thu Nov 12 13:25:43 JST 2015
susumu.yata 2015-11-12 13:25:43 +0900 (Thu, 12 Nov 2015) New Revision: d04fa38f163a9c765b8aa4cdb6e8398e9d5999ed https://github.com/groonga/groonga/commit/d04fa38f163a9c765b8aa4cdb6e8398e9d5999ed Message: grn_ts: move functions for operators into lib/ts/ts_op Added files: lib/ts/ts_op.c lib/ts/ts_op.h Modified files: lib/ts/sources.am lib/ts/ts_expr.c lib/ts/ts_expr.h lib/ts/ts_expr_node.c lib/ts/ts_expr_node.h lib/ts/ts_expr_parser.c lib/ts/ts_expr_parser.h lib/ts/ts_types.h Modified: lib/ts/sources.am (+2 -0) =================================================================== --- lib/ts/sources.am 2015-11-12 13:16:09 +0900 (25e82fd) +++ lib/ts/sources.am 2015-11-12 13:25:43 +0900 (17fcc62) @@ -8,6 +8,8 @@ libgrnts_la_SOURCES = \ ts_expr_parser.c \ ts_expr_parser.h \ ts_log.h \ + ts_op.c \ + ts_op.h \ ts_str.c \ ts_str.h \ ts_types.h \ Modified: lib/ts/ts_expr.c (+0 -46) =================================================================== --- lib/ts/ts_expr.c 2015-11-12 13:16:09 +0900 (21e3a72) +++ lib/ts/ts_expr.c 2015-11-12 13:25:43 +0900 (7288ed5) @@ -129,52 +129,6 @@ grn_ts_geo_vector_is_valid(grn_ts_geo_vector value) { #undef GRN_TS_VECTOR_IS_VALID /*------------------------------------------------------------- - * Operators. - */ - -/* Operator precedence. */ -typedef int grn_ts_op_precedence; - -/* grn_ts_op_get_n_args() returns the number of arguments. */ -static size_t -grn_ts_op_get_n_args(grn_ts_op_type op_type) { - switch (op_type) { - case GRN_TS_OP_LOGICAL_NOT: /* !X */ - case GRN_TS_OP_BITWISE_NOT: /* ~X */ - case GRN_TS_OP_POSITIVE: /* +X */ - case GRN_TS_OP_NEGATIVE: { /* -X */ - return 1; - } - case GRN_TS_OP_LOGICAL_AND: /* X && Y */ - case GRN_TS_OP_LOGICAL_OR: /* X || Y */ - case GRN_TS_OP_LOGICAL_SUB: /* X &! Y */ - case GRN_TS_OP_BITWISE_AND: /* X & Y */ - case GRN_TS_OP_BITWISE_OR: /* X | Y */ - case GRN_TS_OP_BITWISE_XOR: /* X ^ Y */ - case GRN_TS_OP_EQUAL: /* X == Y */ - case GRN_TS_OP_NOT_EQUAL: /* X != Y */ - case GRN_TS_OP_LESS: /* X < Y */ - case GRN_TS_OP_LESS_EQUAL: /* X <= Y */ - case GRN_TS_OP_GREATER: /* X > Y */ - case GRN_TS_OP_GREATER_EQUAL: /* X >= Y */ - case GRN_TS_OP_SHIFT_ARITHMETIC_LEFT: /* X << Y */ - case GRN_TS_OP_SHIFT_ARITHMETIC_RIGHT: /* X >> Y */ - case GRN_TS_OP_SHIFT_LOGICAL_LEFT: /* X <<< Y */ - case GRN_TS_OP_SHIFT_LOGICAL_RIGHT: /* X >>> Y */ - case GRN_TS_OP_PLUS: /* X + Y */ - case GRN_TS_OP_MINUS: /* X - Y */ - case GRN_TS_OP_MULTIPLICATION: /* X * Y */ - case GRN_TS_OP_DIVISION: /* X / Y */ - case GRN_TS_OP_MODULUS: { /* X % Y */ - return 2; - } - default: { - return 0; - } - } -} - -/*------------------------------------------------------------- * grn_ts_expr_bridge. */ Modified: lib/ts/ts_expr.h (+1 -0) =================================================================== --- lib/ts/ts_expr.h 2015-11-12 13:16:09 +0900 (9b6b130) +++ lib/ts/ts_expr.h 2015-11-12 13:25:43 +0900 (6f3009b) @@ -21,6 +21,7 @@ #include "ts_buf.h" #include "ts_expr_node.h" +#include "ts_op.h" #include "ts_types.h" #ifdef __cplusplus Modified: lib/ts/ts_expr_node.c (+0 -3) =================================================================== --- lib/ts/ts_expr_node.c 2015-11-12 13:16:09 +0900 (c4733a9) +++ lib/ts/ts_expr_node.c 2015-11-12 13:25:43 +0900 (e86605d) @@ -292,9 +292,6 @@ grn_ts_data_kind_to_type(grn_ts_data_kind kind) { * Operators. */ -/* Operator precedence. */ -typedef int grn_ts_op_precedence; - /* grn_ts_op_logical_not_bool() returns !arg. */ inline static grn_ts_bool grn_ts_op_logical_not_bool(grn_ts_bool arg) { Modified: lib/ts/ts_expr_node.h (+1 -0) =================================================================== --- lib/ts/ts_expr_node.h 2015-11-12 13:16:09 +0900 (6cbb03e) +++ lib/ts/ts_expr_node.h 2015-11-12 13:25:43 +0900 (cab0cae) @@ -20,6 +20,7 @@ #define GRN_TS_EXPR_NODE_H #include "ts_buf.h" +#include "ts_op.h" #include "ts_types.h" #ifdef __cplusplus Modified: lib/ts/ts_expr_parser.c (+0 -108) =================================================================== --- lib/ts/ts_expr_parser.c 2015-11-12 13:16:09 +0900 (d3a4987) +++ lib/ts/ts_expr_parser.c 2015-11-12 13:25:43 +0900 (34146ef) @@ -26,114 +26,6 @@ #include "ts_str.h" /*------------------------------------------------------------- - * Operators. - */ - -/* Operator precedence. */ -typedef int grn_ts_op_precedence; - -/* grn_ts_op_get_n_args() returns the number of arguments. */ -static size_t -grn_ts_op_get_n_args(grn_ts_op_type op_type) { - switch (op_type) { - case GRN_TS_OP_LOGICAL_NOT: /* !X */ - case GRN_TS_OP_BITWISE_NOT: /* ~X */ - case GRN_TS_OP_POSITIVE: /* +X */ - case GRN_TS_OP_NEGATIVE: { /* -X */ - return 1; - } - case GRN_TS_OP_LOGICAL_AND: /* X && Y */ - case GRN_TS_OP_LOGICAL_OR: /* X || Y */ - case GRN_TS_OP_LOGICAL_SUB: /* X &! Y */ - case GRN_TS_OP_BITWISE_AND: /* X & Y */ - case GRN_TS_OP_BITWISE_OR: /* X | Y */ - case GRN_TS_OP_BITWISE_XOR: /* X ^ Y */ - case GRN_TS_OP_EQUAL: /* X == Y */ - case GRN_TS_OP_NOT_EQUAL: /* X != Y */ - case GRN_TS_OP_LESS: /* X < Y */ - case GRN_TS_OP_LESS_EQUAL: /* X <= Y */ - case GRN_TS_OP_GREATER: /* X > Y */ - case GRN_TS_OP_GREATER_EQUAL: /* X >= Y */ - case GRN_TS_OP_SHIFT_ARITHMETIC_LEFT: /* X << Y */ - case GRN_TS_OP_SHIFT_ARITHMETIC_RIGHT: /* X >> Y */ - case GRN_TS_OP_SHIFT_LOGICAL_LEFT: /* X <<< Y */ - case GRN_TS_OP_SHIFT_LOGICAL_RIGHT: /* X >>> Y */ - case GRN_TS_OP_PLUS: /* X + Y */ - case GRN_TS_OP_MINUS: /* X - Y */ - case GRN_TS_OP_MULTIPLICATION: /* X * Y */ - case GRN_TS_OP_DIVISION: /* X / Y */ - case GRN_TS_OP_MODULUS: { /* X % Y */ - return 2; - } - default: { - return 0; - } - } -} - -/* - * grn_ts_op_get_precedence() returns the precedence. - * A prior operator has a higher precedence. - */ -static grn_ts_op_precedence -grn_ts_op_get_precedence(grn_ts_op_type op_type) { - switch (op_type) { - case GRN_TS_OP_LOGICAL_NOT: - case GRN_TS_OP_BITWISE_NOT: - case GRN_TS_OP_POSITIVE: - case GRN_TS_OP_NEGATIVE: { - return 14; - } - case GRN_TS_OP_LOGICAL_AND: { - return 5; - } - case GRN_TS_OP_LOGICAL_OR: { - return 3; - } - case GRN_TS_OP_LOGICAL_SUB: { - return 4; - } - case GRN_TS_OP_BITWISE_AND: { - return 8; - } - case GRN_TS_OP_BITWISE_OR: { - return 6; - } - case GRN_TS_OP_BITWISE_XOR: { - return 7; - } - case GRN_TS_OP_EQUAL: - case GRN_TS_OP_NOT_EQUAL: { - return 9; - } - case GRN_TS_OP_LESS: - case GRN_TS_OP_LESS_EQUAL: - case GRN_TS_OP_GREATER: - case GRN_TS_OP_GREATER_EQUAL: { - return 10; - } - case GRN_TS_OP_SHIFT_ARITHMETIC_LEFT: - case GRN_TS_OP_SHIFT_ARITHMETIC_RIGHT: - case GRN_TS_OP_SHIFT_LOGICAL_LEFT: - case GRN_TS_OP_SHIFT_LOGICAL_RIGHT: { - return 11; - } - case GRN_TS_OP_PLUS: - case GRN_TS_OP_MINUS: { - return 12; - } - case GRN_TS_OP_MULTIPLICATION: - case GRN_TS_OP_DIVISION: - case GRN_TS_OP_MODULUS: { - return 13; - } - default: { - return 0; - } - } -} - -/*------------------------------------------------------------- * grn_ts_expr_parser. */ Modified: lib/ts/ts_expr_parser.h (+1 -0) =================================================================== --- lib/ts/ts_expr_parser.h 2015-11-12 13:16:09 +0900 (e92d54c) +++ lib/ts/ts_expr_parser.h 2015-11-12 13:25:43 +0900 (64f0d71) @@ -20,6 +20,7 @@ #define GRN_TS_EXPR_PARSER_H #include "ts_expr.h" +#include "ts_op.h" #include "ts_types.h" #ifdef __cplusplus Added: lib/ts/ts_op.c (+115 -0) 100644 =================================================================== --- /dev/null +++ lib/ts/ts_op.c 2015-11-12 13:25:43 +0900 (8984ea7) @@ -0,0 +1,115 @@ +/* -*- c-basic-offset: 2 -*- */ +/* + Copyright(C) 2015 Brazil + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License version 2.1 as published by the Free Software Foundation. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#include "ts_op.h" + +size_t +grn_ts_op_get_n_args(grn_ts_op_type op_type) { + switch (op_type) { + case GRN_TS_OP_LOGICAL_NOT: /* !X */ + case GRN_TS_OP_BITWISE_NOT: /* ~X */ + case GRN_TS_OP_POSITIVE: /* +X */ + case GRN_TS_OP_NEGATIVE: { /* -X */ + return 1; + } + case GRN_TS_OP_LOGICAL_AND: /* X && Y */ + case GRN_TS_OP_LOGICAL_OR: /* X || Y */ + case GRN_TS_OP_LOGICAL_SUB: /* X &! Y */ + case GRN_TS_OP_BITWISE_AND: /* X & Y */ + case GRN_TS_OP_BITWISE_OR: /* X | Y */ + case GRN_TS_OP_BITWISE_XOR: /* X ^ Y */ + case GRN_TS_OP_EQUAL: /* X == Y */ + case GRN_TS_OP_NOT_EQUAL: /* X != Y */ + case GRN_TS_OP_LESS: /* X < Y */ + case GRN_TS_OP_LESS_EQUAL: /* X <= Y */ + case GRN_TS_OP_GREATER: /* X > Y */ + case GRN_TS_OP_GREATER_EQUAL: /* X >= Y */ + case GRN_TS_OP_SHIFT_ARITHMETIC_LEFT: /* X << Y */ + case GRN_TS_OP_SHIFT_ARITHMETIC_RIGHT: /* X >> Y */ + case GRN_TS_OP_SHIFT_LOGICAL_LEFT: /* X <<< Y */ + case GRN_TS_OP_SHIFT_LOGICAL_RIGHT: /* X >>> Y */ + case GRN_TS_OP_PLUS: /* X + Y */ + case GRN_TS_OP_MINUS: /* X - Y */ + case GRN_TS_OP_MULTIPLICATION: /* X * Y */ + case GRN_TS_OP_DIVISION: /* X / Y */ + case GRN_TS_OP_MODULUS: { /* X % Y */ + return 2; + } + default: { + return 0; + } + } +} + +grn_ts_op_precedence +grn_ts_op_get_precedence(grn_ts_op_type op_type) { + switch (op_type) { + case GRN_TS_OP_LOGICAL_NOT: + case GRN_TS_OP_BITWISE_NOT: + case GRN_TS_OP_POSITIVE: + case GRN_TS_OP_NEGATIVE: { + return 14; + } + case GRN_TS_OP_LOGICAL_AND: { + return 5; + } + case GRN_TS_OP_LOGICAL_OR: { + return 3; + } + case GRN_TS_OP_LOGICAL_SUB: { + return 4; + } + case GRN_TS_OP_BITWISE_AND: { + return 8; + } + case GRN_TS_OP_BITWISE_OR: { + return 6; + } + case GRN_TS_OP_BITWISE_XOR: { + return 7; + } + case GRN_TS_OP_EQUAL: + case GRN_TS_OP_NOT_EQUAL: { + return 9; + } + case GRN_TS_OP_LESS: + case GRN_TS_OP_LESS_EQUAL: + case GRN_TS_OP_GREATER: + case GRN_TS_OP_GREATER_EQUAL: { + return 10; + } + case GRN_TS_OP_SHIFT_ARITHMETIC_LEFT: + case GRN_TS_OP_SHIFT_ARITHMETIC_RIGHT: + case GRN_TS_OP_SHIFT_LOGICAL_LEFT: + case GRN_TS_OP_SHIFT_LOGICAL_RIGHT: { + return 11; + } + case GRN_TS_OP_PLUS: + case GRN_TS_OP_MINUS: { + return 12; + } + case GRN_TS_OP_MULTIPLICATION: + case GRN_TS_OP_DIVISION: + case GRN_TS_OP_MODULUS: { + return 13; + } + default: { + return 0; + } + } +} Added: lib/ts/ts_op.h (+82 -0) 100644 =================================================================== --- /dev/null +++ lib/ts/ts_op.h 2015-11-12 13:25:43 +0900 (9613527) @@ -0,0 +1,82 @@ +/* -*- c-basic-offset: 2 -*- */ +/* + Copyright(C) 2015 Brazil + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License version 2.1 as published by the Free Software Foundation. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef GRN_TS_OP_H +#define GRN_TS_OP_H + +#include "../grn.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/*------------------------------------------------------------- + * Operator types. + */ + +typedef enum { + /* Invalid operator. */ + GRN_TS_OP_NOP, + + /* Unary operators. */ + GRN_TS_OP_LOGICAL_NOT, /* !X */ + GRN_TS_OP_BITWISE_NOT, /* ~X */ + GRN_TS_OP_POSITIVE, /* +X */ + GRN_TS_OP_NEGATIVE, /* -X */ + + /* Binary operators. */ + GRN_TS_OP_LOGICAL_AND, /* X && Y */ + GRN_TS_OP_LOGICAL_OR, /* X || Y */ + GRN_TS_OP_LOGICAL_SUB, /* X &! Y */ + GRN_TS_OP_BITWISE_AND, /* X & Y */ + GRN_TS_OP_BITWISE_OR, /* X | Y */ + GRN_TS_OP_BITWISE_XOR, /* X ^ Y */ + GRN_TS_OP_EQUAL, /* X == Y */ + GRN_TS_OP_NOT_EQUAL, /* X != Y */ + GRN_TS_OP_LESS, /* X < Y */ + GRN_TS_OP_LESS_EQUAL, /* X <= Y */ + GRN_TS_OP_GREATER, /* X > Y */ + GRN_TS_OP_GREATER_EQUAL, /* X >= Y */ + GRN_TS_OP_SHIFT_ARITHMETIC_LEFT, /* X << Y */ + GRN_TS_OP_SHIFT_ARITHMETIC_RIGHT, /* X >> Y */ + GRN_TS_OP_SHIFT_LOGICAL_LEFT, /* X <<< Y */ + GRN_TS_OP_SHIFT_LOGICAL_RIGHT, /* X >>> Y */ + GRN_TS_OP_PLUS, /* X + Y */ + GRN_TS_OP_MINUS, /* X - Y */ + GRN_TS_OP_MULTIPLICATION, /* X * Y */ + GRN_TS_OP_DIVISION, /* X / Y */ + GRN_TS_OP_MODULUS /* X % Y */ +} grn_ts_op_type; + +/* Operator precedence. */ +typedef int grn_ts_op_precedence; + +/* grn_ts_op_get_n_args() returns the number of arguments. */ +size_t grn_ts_op_get_n_args(grn_ts_op_type op_type); + +/* + * grn_ts_op_get_precedence() returns the precedence. + * A prior operator has a higher precedence. + */ +grn_ts_op_precedence grn_ts_op_get_precedence(grn_ts_op_type op_type); + +#ifdef __cplusplus +} +#endif + +#endif /* GRN_TS_OP_H */ Modified: lib/ts/ts_types.h (+0 -38) =================================================================== --- lib/ts/ts_types.h 2015-11-12 13:16:09 +0900 (970afec) +++ lib/ts/ts_types.h 2015-11-12 13:25:43 +0900 (dafdc07) @@ -26,44 +26,6 @@ extern "C" { #endif /*------------------------------------------------------------- - * Enumeration types. - */ - -typedef enum { - /* Invalid operator. */ - GRN_TS_OP_NOP, - - /* Unary operators. */ - GRN_TS_OP_LOGICAL_NOT, /* !X */ - GRN_TS_OP_BITWISE_NOT, /* ~X */ - GRN_TS_OP_POSITIVE, /* +X */ - GRN_TS_OP_NEGATIVE, /* -X */ - - /* Binary operators. */ - GRN_TS_OP_LOGICAL_AND, /* X && Y */ - GRN_TS_OP_LOGICAL_OR, /* X || Y */ - GRN_TS_OP_LOGICAL_SUB, /* X &! Y */ - GRN_TS_OP_BITWISE_AND, /* X & Y */ - GRN_TS_OP_BITWISE_OR, /* X | Y */ - GRN_TS_OP_BITWISE_XOR, /* X ^ Y */ - GRN_TS_OP_EQUAL, /* X == Y */ - GRN_TS_OP_NOT_EQUAL, /* X != Y */ - GRN_TS_OP_LESS, /* X < Y */ - GRN_TS_OP_LESS_EQUAL, /* X <= Y */ - GRN_TS_OP_GREATER, /* X > Y */ - GRN_TS_OP_GREATER_EQUAL, /* X >= Y */ - GRN_TS_OP_SHIFT_ARITHMETIC_LEFT, /* X << Y */ - GRN_TS_OP_SHIFT_ARITHMETIC_RIGHT, /* X >> Y */ - GRN_TS_OP_SHIFT_LOGICAL_LEFT, /* X <<< Y */ - GRN_TS_OP_SHIFT_LOGICAL_RIGHT, /* X >>> Y */ - GRN_TS_OP_PLUS, /* X + Y */ - GRN_TS_OP_MINUS, /* X - Y */ - GRN_TS_OP_MULTIPLICATION, /* X * Y */ - GRN_TS_OP_DIVISION, /* X / Y */ - GRN_TS_OP_MODULUS /* X % Y */ -} grn_ts_op_type; - -/*------------------------------------------------------------- * Built-in data types. */ -------------- next part -------------- HTML����������������������������...Download