Example #1
0
 public void TestCardinality1()
 {
     BitSet set = new BitSet();
     Assert.AreEqual(0, set.Cardinality());
     for (int i = 0; i < 128; i++)
     {
         set.Set(i);
         Assert.AreEqual(i + 1, set.Cardinality());
         Assert.AreEqual(0, set.NextSetBit(0));
         if (i > 0)
             Assert.AreEqual(i * 1 - 1, set.NextSetBit(i * 1 - 1));
     }
 }
 public BitSet GetDescendants(int rule)
 {
     BitSet descendants = new BitSet();
     descendants.Or(children[rule]);
     while (true)
     {
         int cardinality = descendants.Cardinality();
         for (int i = descendants.NextSetBit(0); i >= 0; i = descendants.NextSetBit(i + 1))
         {
             descendants.Or(children[i]);
         }
         if (descendants.Cardinality() == cardinality)
         {
             // nothing changed
             break;
         }
     }
     return descendants;
 }
 public BitSet GetAncestors(int rule)
 {
     BitSet ancestors = new BitSet();
     ancestors.Or(parents[rule]);
     while (true)
     {
         int cardinality = ancestors.Cardinality();
         for (int i = ancestors.NextSetBit(0); i >= 0; i = ancestors.NextSetBit(i + 1))
         {
             ancestors.Or(parents[i]);
         }
         if (ancestors.Cardinality() == cardinality)
         {
             // nothing changed
             break;
         }
     }
     return ancestors;
 }