Antlr4.Runtime.Sharpen.BitSet.NextSetBit C# (CSharp) Метод

NextSetBit() публичный Метод

public NextSetBit ( int fromIndex ) : int
fromIndex int
Результат int
        public int NextSetBit(int fromIndex)
        {
            if (fromIndex < 0)
                throw new ArgumentOutOfRangeException("fromIndex");

            if (IsEmpty())
                return -1;

            int i = fromIndex / BitsPerElement;
            if (i >= _data.Length)
                return -1;

            ulong current = _data[i] & ~((1UL << (fromIndex % BitsPerElement)) - 1);

            while (true)
            {
                int bit = BitScanForward(current);
                if (bit >= 0)
                    return bit + i * BitsPerElement;

                i++;
                if (i >= _data.Length)
                    break;

                current = _data[i];
            }

            return -1;
        }

Usage Example

Пример #1
0
 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;
 }
All Usage Examples Of Antlr4.Runtime.Sharpen.BitSet::NextSetBit