[Groonga-commit] groonga/groonga at 45db8c3 [master] grn_ts: update comparison operators to support references

Back to archive index

susumu.yata null+****@clear*****
Wed Sep 9 21:19:34 JST 2015


susumu.yata	2015-09-09 21:19:34 +0900 (Wed, 09 Sep 2015)

  New Revision: 45db8c3e102bea619eb908ee039bcc63d2c760dd
  https://github.com/groonga/groonga/commit/45db8c3e102bea619eb908ee039bcc63d2c760dd

  Message:
    grn_ts: update comparison operators to support references
    
    GitHub: #386

  Modified files:
    lib/ts.c

  Modified: lib/ts.c (+30 -4)
===================================================================
--- lib/ts.c    2015-09-09 20:52:00 +0900 (6d4b61e)
+++ lib/ts.c    2015-09-09 21:19:34 +0900 (5d736cc)
@@ -590,6 +590,13 @@ grn_ts_op_equal_geo_point(grn_ts_geo_point lhs, grn_ts_geo_point rhs) {
   return (lhs.latitude == rhs.latitude) && (lhs.longitude == rhs.longitude);
 }
 
+/* grn_ts_op_equal_ref() returns lhs == rhs. */
+inline static grn_bool
+grn_ts_op_equal_ref(grn_ts_ref lhs, grn_ts_ref rhs) {
+  /* Ignore scores. */
+  return lhs.id == rhs.id;
+}
+
 #define GRN_TS_OP_EQUAL_VECTOR(kind)\
   size_t i;\
   if (lhs.size != rhs.size) {\
@@ -638,6 +645,12 @@ grn_ts_op_equal_geo_point_vector(grn_ts_geo_point_vector lhs,
                                  grn_ts_geo_point_vector rhs) {
   GRN_TS_OP_EQUAL_VECTOR(geo_point)
 }
+
+/* grn_ts_op_equal_ref_vector() returns lhs == rhs. */
+inline static grn_bool
+grn_ts_op_equal_ref_vector(grn_ts_ref_vector lhs, grn_ts_ref_vector rhs) {
+  GRN_TS_OP_EQUAL_VECTOR(ref)
+}
 #undef GRN_TS_OP_EQUAL_VECTOR
 
 /* grn_ts_op_not_equal_bool() returns lhs != rhs. */
@@ -677,6 +690,13 @@ grn_ts_op_not_equal_geo_point(grn_ts_geo_point lhs, grn_ts_geo_point rhs) {
   return (lhs.latitude != rhs.latitude) && (lhs.longitude != rhs.longitude);
 }
 
+/* grn_ts_op_not_equal_ref() returns lhs != rhs. */
+inline static grn_bool
+grn_ts_op_not_equal_ref(grn_ts_ref lhs, grn_ts_ref rhs) {
+  /* Ignore scores. */
+  return lhs.id != rhs.id;
+}
+
 #define GRN_TS_OP_NOT_EQUAL_VECTOR(kind)\
   size_t i;\
   if (lhs.size != rhs.size) {\
@@ -725,6 +745,12 @@ grn_ts_op_not_equal_geo_point_vector(grn_ts_geo_point_vector lhs,
                                  grn_ts_geo_point_vector rhs) {
   GRN_TS_OP_NOT_EQUAL_VECTOR(geo_point)
 }
+
+/* grn_ts_op_not_equal_ref_vector() returns lhs != rhs. */
+inline static grn_bool
+grn_ts_op_not_equal_ref_vector(grn_ts_ref_vector lhs, grn_ts_ref_vector rhs) {
+  GRN_TS_OP_NOT_EQUAL_VECTOR(ref)
+}
 #undef GRN_TS_OP_NOT_EQUAL_VECTOR
 
 /*-------------------------------------------------------------
@@ -2378,14 +2404,14 @@ grn_ts_op_equal_evaluate(grn_ctx *ctx, grn_ts_expr_op_node *node,
     GRN_TS_OP_EQUAL_EVALUATE_CASE_BLOCK(TIME, time)
     GRN_TS_OP_EQUAL_EVALUATE_CASE_BLOCK(TEXT, text)
     GRN_TS_OP_EQUAL_EVALUATE_CASE_BLOCK(GEO_POINT, geo_point)
-    // TODO: GRN_TS_REF.
+    GRN_TS_OP_EQUAL_EVALUATE_CASE_BLOCK(REF, ref)
     GRN_TS_OP_EQUAL_EVALUATE_VECTOR_CASE_BLOCK(BOOL, bool)
     GRN_TS_OP_EQUAL_EVALUATE_VECTOR_CASE_BLOCK(INT, int)
     GRN_TS_OP_EQUAL_EVALUATE_VECTOR_CASE_BLOCK(FLOAT, float)
     GRN_TS_OP_EQUAL_EVALUATE_VECTOR_CASE_BLOCK(TIME, time)
     GRN_TS_OP_EQUAL_EVALUATE_VECTOR_CASE_BLOCK(TEXT, text)
     GRN_TS_OP_EQUAL_EVALUATE_VECTOR_CASE_BLOCK(GEO_POINT, geo_point)
-    // TODO: GRN_TS_REF_VECTOR.
+    GRN_TS_OP_EQUAL_EVALUATE_VECTOR_CASE_BLOCK(REF, ref)
     default: {
       return GRN_INVALID_ARGUMENT;
     }
@@ -2448,14 +2474,14 @@ grn_ts_op_not_equal_evaluate(grn_ctx *ctx, grn_ts_expr_op_node *node,
     GRN_TS_OP_NOT_EQUAL_EVALUATE_CASE_BLOCK(TIME, time)
     GRN_TS_OP_NOT_EQUAL_EVALUATE_CASE_BLOCK(TEXT, text)
     GRN_TS_OP_NOT_EQUAL_EVALUATE_CASE_BLOCK(GEO_POINT, geo_point)
-    // TODO: GRN_TS_REF.
+    GRN_TS_OP_NOT_EQUAL_EVALUATE_CASE_BLOCK(REF, ref)
     GRN_TS_OP_NOT_EQUAL_EVALUATE_VECTOR_CASE_BLOCK(BOOL, bool)
     GRN_TS_OP_NOT_EQUAL_EVALUATE_VECTOR_CASE_BLOCK(INT, int)
     GRN_TS_OP_NOT_EQUAL_EVALUATE_VECTOR_CASE_BLOCK(FLOAT, float)
     GRN_TS_OP_NOT_EQUAL_EVALUATE_VECTOR_CASE_BLOCK(TIME, time)
     GRN_TS_OP_NOT_EQUAL_EVALUATE_VECTOR_CASE_BLOCK(TEXT, text)
     GRN_TS_OP_NOT_EQUAL_EVALUATE_VECTOR_CASE_BLOCK(GEO_POINT, geo_point)
-    // TODO: GRN_TS_REF_VECTOR.
+    GRN_TS_OP_NOT_EQUAL_EVALUATE_VECTOR_CASE_BLOCK(REF, ref)
     default: {
       return GRN_INVALID_ARGUMENT;
     }
-------------- next part --------------
HTML����������������������������...
Download 



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