You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
72 lines
1.5 KiB
72 lines
1.5 KiB
'use strict';
|
|
|
|
var BufferWriter = require('./bufferwriter');
|
|
var BufferReader = require('./bufferreader');
|
|
var BN = require('../crypto/bn');
|
|
|
|
var Varint = function Varint(buf) {
|
|
if (!(this instanceof Varint))
|
|
return new Varint(buf);
|
|
if (Buffer.isBuffer(buf)) {
|
|
this.buf = buf;
|
|
} else if (typeof buf === 'number') {
|
|
var num = buf;
|
|
this.fromNumber(num);
|
|
} else if (buf instanceof BN) {
|
|
var bn = buf;
|
|
this.fromBN(bn);
|
|
} else if (buf) {
|
|
var obj = buf;
|
|
this.set(obj);
|
|
}
|
|
};
|
|
|
|
Varint.prototype.set = function(obj) {
|
|
this.buf = obj.buf || this.buf;
|
|
return this;
|
|
};
|
|
|
|
Varint.prototype.fromString = function(str) {
|
|
this.set({
|
|
buf: new Buffer(str, 'hex')
|
|
});
|
|
return this;
|
|
};
|
|
|
|
Varint.prototype.toString = function() {
|
|
return this.buf.toString('hex');
|
|
};
|
|
|
|
Varint.prototype.fromBuffer = function(buf) {
|
|
this.buf = buf;
|
|
return this;
|
|
};
|
|
|
|
Varint.prototype.fromBufferReader = function(br) {
|
|
this.buf = br.readVarintBuf();
|
|
return this;
|
|
};
|
|
|
|
Varint.prototype.fromBN = function(bn) {
|
|
this.buf = BufferWriter().writeVarintBN(bn).concat();
|
|
return this;
|
|
};
|
|
|
|
Varint.prototype.fromNumber = function(num) {
|
|
this.buf = BufferWriter().writeVarintNum(num).concat();
|
|
return this;
|
|
};
|
|
|
|
Varint.prototype.toBuffer = function() {
|
|
return this.buf;
|
|
};
|
|
|
|
Varint.prototype.toBN = function() {
|
|
return BufferReader(this.buf).readVarintBN();
|
|
};
|
|
|
|
Varint.prototype.toNumber = function() {
|
|
return BufferReader(this.buf).readVarintNum();
|
|
};
|
|
|
|
module.exports = Varint;
|
|
|