[Groonga-commit] groonga/groonga at bb93bbd [master] egn: put loops in switch-cases, not switch-cases in a loop

Back to archive index

susumu.yata null+****@clear*****
Fri Jun 19 12:52:56 JST 2015


susumu.yata	2015-06-19 12:52:56 +0900 (Fri, 19 Jun 2015)

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

  Message:
    egn: put loops in switch-cases, not switch-cases in a loop

  Modified files:
    lib/egn.cpp

  Modified: lib/egn.cpp (+55 -7)
===================================================================
--- lib/egn.cpp    2015-06-19 12:43:10 +0900 (28f83a0)
+++ lib/egn.cpp    2015-06-19 12:52:56 +0900 (c7e7357)
@@ -120,14 +120,62 @@ grn_rc TableCursor::read(Record *records, size_t size, size_t *count) {
   if ((!records && (size != 0)) || !count) {
     return GRN_INVALID_ARGUMENT;
   }
-  for (size_t i = 0; i < size; ++i) {
-    grn_id id = grn_table_cursor_next(ctx_, cursor_);
-    if (id == GRN_ID_NIL) {
-      *count = i;
-      return GRN_SUCCESS;
+  switch (cursor_->header.type) {
+    case GRN_CURSOR_TABLE_PAT_KEY: {
+      for (size_t i = 0; i < size; ++i) {
+        grn_id id = grn_pat_cursor_next(
+          ctx_, reinterpret_cast<grn_pat_cursor *>(cursor_));
+        if (id == GRN_ID_NIL) {
+          *count = i;
+          return GRN_SUCCESS;
+        }
+        records[i].id = id;
+        records[i].score = default_score_;
+      }
+      break;
+    }
+    case GRN_CURSOR_TABLE_DAT_KEY: {
+      for (size_t i = 0; i < size; ++i) {
+        grn_id id = grn_dat_cursor_next(
+          ctx_, reinterpret_cast<grn_dat_cursor *>(cursor_));
+        if (id == GRN_ID_NIL) {
+          *count = i;
+          return GRN_SUCCESS;
+        }
+        records[i].id = id;
+        records[i].score = default_score_;
+      }
+      break;
+    }
+    case GRN_CURSOR_TABLE_HASH_KEY: {
+      for (size_t i = 0; i < size; ++i) {
+        grn_id id = grn_hash_cursor_next(
+          ctx_, reinterpret_cast<grn_hash_cursor *>(cursor_));
+        if (id == GRN_ID_NIL) {
+          *count = i;
+          return GRN_SUCCESS;
+        }
+        records[i].id = id;
+        records[i].score = default_score_;
+      }
+      break;
+    }
+    case GRN_CURSOR_TABLE_NO_KEY: {
+      for (size_t i = 0; i < size; ++i) {
+        grn_id id = grn_array_cursor_next(
+          ctx_, reinterpret_cast<grn_array_cursor *>(cursor_));
+        if (id == GRN_ID_NIL) {
+          *count = i;
+          return GRN_SUCCESS;
+        }
+        records[i].id = id;
+        records[i].score = default_score_;
+      }
+      break;
+    }
+    default: {
+      return GRN_UNKNOWN_ERROR;
     }
-    records[i].id = id;
-    records[i].score = default_score_;
   }
   *count = size;
   return GRN_SUCCESS;
-------------- next part --------------
HTML����������������������������...
Download 



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