Exemple #1
0
        public static long LongBinarySerach(IFixedWidthColumn column, long value, long index, long count)
        {
            if (index < 0)
            {
                throw new ArgumentOutOfRangeException("index", "Must be non negative");
            }
            if (count <= 0)
            {
                throw new ArgumentOutOfRangeException("count", "Must be non negative");
            }
            var lo = index;
            var hi = count - 1;

            while (lo <= hi)
            {
                long i = (hi - lo) / 2 + lo;
                long c = column.GetInt64(i) - value;
                if (c == 0)
                {
                    return(i);
                }

                if (c < 0)
                {
                    lo = i + 1;
                }
                else
                {
                    hi = i - 1;
                }
            }
            return(~lo);
        }
Exemple #2
0
 public long?GetNullableInt64(long rowid, ByteArray bitset)
 {
     if (!bitset.IsSet(_bitsetIndex))
     {
         return(_column.GetInt64(rowid));
     }
     return(default(long?));
 }