Unraveled symbol
Inheritance: Bitmap
Esempio n. 1
0
 public virtual long Rank1(long pos, UnraveledSymbolXLB ctx)
 {
     return this.Rank1 (pos);
 }
Esempio n. 2
0
 public virtual bool Access(long pos, UnraveledSymbolXLB ctx)
 {
     return this.Access(pos);
 }
Esempio n. 3
0
 public virtual long Select1(long rank, UnraveledSymbolXLB ctx)
 {
     return this.Select1 (rank);
 }
Esempio n. 4
0
 public int Select(int symbol, int _rank, UnraveledSymbolXLB unraveled_ctx)
 {
     if (_rank < 1) {
         return -1;
     }
     if (symbol == 0) {
         return (int)this.xl_bitmap.Select1 (_rank);
     }
     long pos = symbol * ((long)this.Count);
     if (unraveled_ctx.prevrank == int.MinValue) {
         unraveled_ctx.prevrank = (int)this.xl_bitmap.Rank1 (pos - 1);
     }
     var p = this.xl_bitmap.Select1 (unraveled_ctx.prevrank + _rank, unraveled_ctx) - pos;
     return (int)p;
 }
Esempio n. 5
0
 public int Rank(int symbol, int _pos, UnraveledSymbolXLB unraveled_ctx)
 {
     if (_pos < 0) {
         return 0;
     }
     if (symbol == 0) {
         return (int)this.xl_bitmap.Rank1 (_pos);
     }
     long pos = symbol * ((long)this.Count);
     if (unraveled_ctx.prevrank == int.MinValue) {
         unraveled_ctx.prevrank = (int)this.xl_bitmap.Rank1 (pos - 1);
     }
     var rank_a = this.xl_bitmap.Rank1 (pos + _pos);
     return (int)(rank_a - unraveled_ctx.prevrank);
 }
Esempio n. 6
0
 public override long Select1(long rank, UnraveledSymbolXLB unraveled_ctx)
 {
     Context ctx = unraveled_ctx.ctx as Context;
     if (ctx == null) {
         var bctx = new BitStreamCtxRL ();
         unraveled_ctx.ctx = ctx = new Context (rank, bctx);
         ctx.prev_res = this.BackendSelect1 ((int)rank, ctx.ctx);
     } else {
         int left = (int)(rank - ctx.prev_arg);
         if (left < 0 || left > this.B * 2) {
             ctx.prev_res = this.BackendSelect1 ((int)rank, ctx.ctx);
         } else {
             for (int i = 0; i < left; i++) {
                 long read = this.ReadNext (ctx.ctx);
                 ctx.prev_res += read;
             }
         }
     }
     ctx.prev_arg = rank;
     return ctx.prev_res;
 }