You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@arrow.apache.org by al...@apache.org on 2021/08/20 13:16:50 UTC

[arrow-rs] branch active_release updated: Add get_bit to BooleanBufferBuilder (#693) (#699)

This is an automated email from the ASF dual-hosted git repository.

alamb pushed a commit to branch active_release
in repository https://gitbox.apache.org/repos/asf/arrow-rs.git


The following commit(s) were added to refs/heads/active_release by this push:
     new 1fb6210  Add get_bit to BooleanBufferBuilder (#693) (#699)
1fb6210 is described below

commit 1fb621063b8d54d95944268f603190bb15ae311a
Author: Andrew Lamb <an...@nerdnetworks.org>
AuthorDate: Fri Aug 20 09:16:47 2021 -0400

    Add get_bit to BooleanBufferBuilder (#693) (#699)
    
    * Add get_bit to BooleanBufferBuilder
    
    * fix clippy
    
    Co-authored-by: Boaz <be...@gmail.com>
---
 arrow/src/array/builder.rs | 30 ++++++++++++++++++++++++++++++
 1 file changed, 30 insertions(+)

diff --git a/arrow/src/array/builder.rs b/arrow/src/array/builder.rs
index d0d144a..1d3e957 100644
--- a/arrow/src/array/builder.rs
+++ b/arrow/src/array/builder.rs
@@ -312,6 +312,11 @@ impl BooleanBufferBuilder {
     }
 
     #[inline]
+    pub fn get_bit(&mut self, index: usize) -> bool {
+        bit_util::get_bit(self.buffer.as_slice(), index)
+    }
+
+    #[inline]
     pub fn is_empty(&self) -> bool {
         self.len == 0
     }
@@ -2491,6 +2496,31 @@ mod tests {
     }
 
     #[test]
+    fn test_bool_buffer_builder_get_first_bit() {
+        let mut buffer = BooleanBufferBuilder::new(16);
+        buffer.append_n(8, true);
+        buffer.append_n(8, false);
+        assert!(buffer.get_bit(0));
+    }
+
+    #[test]
+    fn test_bool_buffer_builder_get_last_bit() {
+        let mut buffer = BooleanBufferBuilder::new(16);
+        buffer.append_n(8, true);
+        buffer.append_n(8, false);
+        assert!(!buffer.get_bit(15));
+    }
+
+    #[test]
+    fn test_bool_buffer_builder_get_an_inner_bit() {
+        let mut buffer = BooleanBufferBuilder::new(16);
+        buffer.append_n(4, false);
+        buffer.append_n(8, true);
+        buffer.append_n(4, false);
+        assert!(buffer.get_bit(11));
+    }
+
+    #[test]
     fn test_boolean_array_builder_append_slice() {
         let arr1 =
             BooleanArray::from(vec![Some(true), Some(false), None, None, Some(false)]);