-
Notifications
You must be signed in to change notification settings - Fork 1
4 extending type
gettocat edited this page Aug 25, 2017
·
1 revision
You can add you own type to BitPony. In this version extending types can not be used in stack script and stream.
interface:
bitPony.extend('base58', function () {
return {
read: function (buffer) {
if (typeof buffer == 'string')
buffer = new Buffer(buffer, 'hex')
if (buffer.length == 0 || !buffer)
buffer = new Buffer([0x0]);
//create obj from buffer
return obj;
},
write: function (obj) {
//create buffer from
return buffer;
}
}
});
//usage
var obj = bitPony.base58.read(buffer);
var buff = bitPony.base58.write(obj);For example we can create var_int vector. var_int cnt + var_int[cnt]
bitPony.extend('vector_var_int', function () {
return {
read: function (buffer) {
if (typeof buffer == 'string')
buffer = new Buffer(buffer, 'hex')
if (buffer.length == 0 || !buffer)
buffer = new Buffer([0x0]);
var stream = new bitPony.reader(buffer);
var res = stream.var_int(0);
var cnt = res.result, arr = [];
for (var i = 0; i < cnt; i++) {
res = stream.var_int(res.offset)
arr.push(res.result);
}
return arr;
},
write: function (arr) {
var buffer = new Buffer("");
var stream = new bitPony.writer(buffer);
stream.var_int(arr.length, true);
for (var i in arr) {
stream.var_int(arr[i], true);
}
return stream.getBuffer();
}
}
});
var res = bitPony.vector_var_int.write([1, 15, 532, Math.pow(2, 55), 3, 6346736]);//06010ffd1402ff000000000000800003fef0d76000
var res = bitPony.vector_var_int.read("06010ffd1402ff000000000000800003fef0d76000");//[1, 15, 532, Math.pow(2, 55), 3, 6346736]look at page 4.1