/*
Copyright (c) 2004-2011, The Dojo Foundation All Rights Reserved.
Available via Academic Free License >= 2.1 OR the modified BSD license.
see: http://dojotoolkit.org/license for details
*/
if(!dojo._hasResource["dojox.encoding.bits"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
dojo._hasResource["dojox.encoding.bits"] = true;
dojo.provide("dojox.encoding.bits");
dojo.getObject("encoding.bits", true, dojox);
dojox.encoding.bits.OutputStream = function(){
this.reset();
};
dojo.extend(dojox.encoding.bits.OutputStream, {
reset: function(){
this.buffer = [];
this.accumulator = 0;
this.available = 8;
},
putBits: function(value, width){
while(width){
var w = Math.min(width, this.available);
var v = (w <= width ? value >>> (width - w) : value) << (this.available - w);
this.accumulator |= v & (255 >>> (8 - this.available));
this.available -= w;
if(!this.available){
this.buffer.push(this.accumulator);
this.accumulator = 0;
this.available = 8;
}
width -= w;
}
},
getWidth: function(){
return this.buffer.length * 8 + (8 - this.available);
},
getBuffer: function(){
var b = this.buffer;
if(this.available < 8){ b.push(this.accumulator & (255 << this.available)); }
this.reset();
return b;
}
});
dojox.encoding.bits.InputStream = function(buffer, width){
this.buffer = buffer;
this.width = width;
this.bbyte = this.bit = 0;
};
dojo.extend(dojox.encoding.bits.InputStream, {
getBits: function(width){
var r = 0;
while(width){
var w = Math.min(width, 8 - this.bit);
var v = this.buffer[this.bbyte] >>> (8 - this.bit - w);
r <<= w;
r |= v & ~(~0 << w);
this.bit += w;
if(this.bit == 8){
++this.bbyte;
this.bit = 0;
}
width -= w;
}
return r;
},
getWidth: function(){
return this.width - this.bbyte * 8 - this.bit;
}
});
}
# |
Change |
User |
Description |
Committed |
|
#1
|
16170 |
perforce_software |
Move Chronicle files to follow new path scheme for branching. |
|
|
//guest/perforce_software/chronicle/collateral/dojo-debug/dojox/encoding/bits.js |
#1
|
8972 |
Matt Attaway |
Initial add of the Chronicle source code |
|
|