natix.CompactDS.GGMN.Select1 C# (CSharp) Method

Select1() public method

public Select1 ( int rank ) : int
rank int
return int
        public override int Select1(int rank)
        {
            if (rank <= 0) {
                return -1;
            }
            int absindex = -1;
            if (this.Abs.Length > 0) {
                absindex = Search.FindFirst<uint> ((uint)rank, this.Abs);
            }
            if (absindex >= 0 && this.Abs[absindex] == rank) {
                absindex--;
            }
            if (absindex < 0) {
                return BitAccess.Select1 (this.BitBlocks, 0, this.B, rank);
            } else {
                // Console.WriteLine ("GNBitmap Abs.Count: {0}, absindex: {1}", this.Abs.Count, absindex);
                int startindex = (absindex + 1) * this.B;
                //return ((startindex)<<5) +
                //	BitAccess.Select1 (this.BitBlocks, startindex, this.AbsBlockSize, rank - (int)this.Abs[absindex]);
                int rel = 0;
                if (this.BitBlocks.Length != startindex) {
                    rel = BitAccess.Select1 (this.BitBlocks, startindex, this.B, rank - (int)this.Abs[absindex]);
                }
                return (startindex << 5) + rel;
            }
        }