[Groonga-commit] groonga/grnxx at d0017cf [master] Add Array<Bool>::subarray().

Back to archive index

susumu.yata null+****@clear*****
Tue Aug 5 17:44:40 JST 2014


susumu.yata	2014-08-05 17:44:40 +0900 (Tue, 05 Aug 2014)

  New Revision: d0017cf903611a0d9ffa9645cc9939a0aeb24dce
  https://github.com/groonga/grnxx/commit/d0017cf903611a0d9ffa9645cc9939a0aeb24dce

  Message:
    Add Array<Bool>::subarray().

  Modified files:
    include/grnxx/array.hpp

  Modified: include/grnxx/array.hpp (+12 -4)
===================================================================
--- include/grnxx/array.hpp    2014-08-05 17:15:17 +0900 (6c6425d)
+++ include/grnxx/array.hpp    2014-08-05 17:44:40 +0900 (0b91433)
@@ -207,8 +207,8 @@ class Subarray<Bool> {
  public:
   Subarray() = default;
   Subarray(uint64_t *blocks, Int offset, Int size)
-      : blocks_(blocks),
-        offset_(static_cast<uint64_t>(offset)),
+      : blocks_(blocks + (offset / 64)),
+        offset_(static_cast<uint64_t>(offset % 64)),
         size_(static_cast<uint64_t>(size)) {}
   Subarray(const Subarray &) = default;
 
@@ -216,11 +216,11 @@ class Subarray<Bool> {
 
   Subarray subarray(Int offset = 0) const {
     offset += static_cast<Int>(offset_);
-    return Subarray(blocks_ + (offset / 64), (offset % 64), size() - offset);
+    return Subarray(blocks_, offset, size() - offset);
   }
   Subarray subarray(Int offset, Int size) const {
     offset += static_cast<Int>(offset_);
-    return Subarray(blocks_ + (offset / 64), (offset % 64), size);
+    return Subarray(blocks_, offset, size);
   }
 
   BoolReference operator[](Int i) {
@@ -267,6 +267,14 @@ class Array<Bool> {
     return *this;
   }
 
+  Subarray<Bool> subarray(Int offset = 0) const {
+    return Subarray<Bool>(const_cast<uint64_t *>(blocks()),
+                          offset, size() - offset);
+  }
+  Subarray<Bool> subarray(Int offset, Int size) const {
+    return Subarray<Bool>(const_cast<uint64_t *>(blocks()), offset, size);
+  }
+
   BoolReference operator[](Int i) {
     return BoolReference(&blocks_[i / 64], uint64_t(1) << (i % 64));
   }
-------------- next part --------------
HTML����������������������������...
Télécharger 



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