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����������������������������... 下载