Repository: calcite
Updated Branches:
  refs/heads/branch-1.15 [created] 2ffe5d581


Add ImmutableBitSet.set(int, boolean)


Project: http://git-wip-us.apache.org/repos/asf/calcite/repo
Commit: http://git-wip-us.apache.org/repos/asf/calcite/commit/01eb6b5e
Tree: http://git-wip-us.apache.org/repos/asf/calcite/tree/01eb6b5e
Diff: http://git-wip-us.apache.org/repos/asf/calcite/diff/01eb6b5e

Branch: refs/heads/branch-1.15
Commit: 01eb6b5ec28985eb64892fec0918c4a0a7c4aad0
Parents: cd493ef
Author: Julian Hyde <[email protected]>
Authored: Thu Feb 2 14:41:40 2017 -0800
Committer: Julian Hyde <[email protected]>
Committed: Mon Nov 27 16:33:31 2017 -0800

----------------------------------------------------------------------
 .../main/java/org/apache/calcite/util/ImmutableBitSet.java  | 9 +++++++++
 .../java/org/apache/calcite/util/ImmutableBitSetTest.java   | 9 +++++++++
 2 files changed, 18 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/calcite/blob/01eb6b5e/core/src/main/java/org/apache/calcite/util/ImmutableBitSet.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/util/ImmutableBitSet.java 
b/core/src/main/java/org/apache/calcite/util/ImmutableBitSet.java
index 568fe3e..4f514bb 100644
--- a/core/src/main/java/org/apache/calcite/util/ImmutableBitSet.java
+++ b/core/src/main/java/org/apache/calcite/util/ImmutableBitSet.java
@@ -843,6 +843,15 @@ public class ImmutableBitSet
     return union(ImmutableBitSet.of(i));
   }
 
+  /** Returns a bit set the same as this but with a given bit set (if b is
+   * true) or unset (if b is false). */
+  public ImmutableBitSet set(int i, boolean b) {
+    if (get(i) == b) {
+      return this;
+    }
+    return b ? set(i) : clear(i);
+  }
+
   /** Returns a bit set the same as this but with a given bit set if condition
    * is true. */
   public ImmutableBitSet setIf(int bit, boolean condition) {

http://git-wip-us.apache.org/repos/asf/calcite/blob/01eb6b5e/core/src/test/java/org/apache/calcite/util/ImmutableBitSetTest.java
----------------------------------------------------------------------
diff --git 
a/core/src/test/java/org/apache/calcite/util/ImmutableBitSetTest.java 
b/core/src/test/java/org/apache/calcite/util/ImmutableBitSetTest.java
index 8894012..9ae81d0 100644
--- a/core/src/test/java/org/apache/calcite/util/ImmutableBitSetTest.java
+++ b/core/src/test/java/org/apache/calcite/util/ImmutableBitSetTest.java
@@ -33,6 +33,7 @@ import java.util.SortedMap;
 
 import static org.hamcrest.CoreMatchers.equalTo;
 import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.CoreMatchers.sameInstance;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertThat;
@@ -490,6 +491,14 @@ public class ImmutableBitSetTest {
     assertThat(bitSet.clearIf(29, true), equalTo(bitSet2));
   }
 
+  @Test public void testSet2() {
+    final ImmutableBitSet bitSet = ImmutableBitSet.of(29, 4, 1969);
+    final ImmutableBitSet bitSet2 = ImmutableBitSet.of(29, 4, 1969, 30);
+    assertThat(bitSet.set(30, false), sameInstance(bitSet));
+    assertThat(bitSet.set(30, true), equalTo(bitSet2));
+    assertThat(bitSet.set(29, true), sameInstance(bitSet));
+  }
+
   @Test public void testShift() {
     final ImmutableBitSet bitSet = ImmutableBitSet.of(29, 4, 1969);
     assertThat(bitSet.shift(0), is(bitSet));

Reply via email to