beson
Version:
Yet an another binary representation of json format
134 lines (130 loc) • 3.5 kB
TypeScript
declare type TypedArray = Uint8Array|Uint8ClampedArray|Int8Array|Uint16Array|Int16Array|Uint32Array|Int32Array|Float32Array|Float64Array;
declare type BinartIntLike<T> = T|BinaryIntBase|number|string;
declare class BinaryIntBase {
_ab: ArrayBuffer;
_ba: Uint8Array;
_ta: TypedArray;
isSignedInt:boolean;
isBinaryInt():boolean;
}
declare class BinaryInt<T> extends BinaryIntBase {
rshift(offset:number):T;
lshift(offset:number):T;
not():T;
or(value:BinartIntLike<T>):T;
and(value:BinartIntLike<T>):T;
xor(value:BinartIntLike<T>):T;
mul(value:BinartIntLike<T>):T;
multipliedBy(value:BinartIntLike<T>):T;
div(value:BinartIntLike<T>):T;
dividedBy(value:BinartIntLike<T>):T;
add(value:BinartIntLike<T>):T;
sub(value:BinartIntLike<T>):T;
modulo(value:BinartIntLike<T>):T;
mod(value:BinartIntLike<T>):T;
compare(value:BinartIntLike<T>):boolean;
isZero():boolean;
toBytes():Uint8Array;
toString(radix?:2|10|16):string;
}
export function Serialize(data:any):Uint8Array;
export function Deserialize(data:ArrayBuffer|Uint8Array):any|undefined;
export class Int8 extends BinaryInt<Int8> {
static from(data:any):Int8;
static ZERO:Int8;
static MIN:Int8;
static MAX:Int8;
}
export class UInt8 extends BinaryInt<UInt8> {
static from(data:any):Int8;
static ZERO:Int8;
static MAX:Int8;
}
export class Int16 extends BinaryInt<Int16> {
static from(data:any):Int16;
static ZERO:Int16;
static MIN:Int16;
static MAX:Int16;
}
export class UInt16 extends BinaryInt<UInt16> {
static from(data:any):UInt16;
static ZERO:UInt16;
static MAX:UInt16;
}
export class Int32 extends BinaryInt<Int32> {
static from(data:any):Int32;
static ZERO:Int32;
static MIN:Int32;
static MAX:Int32;
}
export class UInt32 extends BinaryInt<UInt32> {
static from(data:any):UInt32;
static ZERO:UInt32;
static MAX:UInt32;
}
export class Float32 extends BinaryInt<Float32> {
static from(value:any):Float32;
static ZERO:Float32;
static NaN:Float32;
static MAX_INFINITY:Float32;
static MIN_INFINITY:Float32;
static MAX_INT:Float32;
static MIN_INT:Float32;
static MAX:Float32;
static MIN:Float32;
}
export class Int64 extends BinaryInt<Int64> {
static from(data:any):Int64;
static ZERO:Int64;
static MIN:Int64;
static MAX:Int64;
}
export class UInt64 extends BinaryInt<UInt64> {
static from(data:any):UInt64;
static ZERO:UInt64;
static MAX:UInt64;
}
export class Int128 extends BinaryInt<Int128> {
static from(data:any):Int128;
static ZERO:Int128;
static MIN:Int128;
static MAX:Int128;
}
export class UInt128 extends BinaryInt<UInt128> {
static from(data:any):UInt128;
static ZERO:UInt128;
static MAX:UInt128;
}
export class Int256 extends BinaryInt<Int256> {
static from(data:any):Int256;
static ZERO:Int256;
static MIN:Int256;
static MAX:Int256;
}
export class UInt256 extends BinaryInt<UInt256> {
static from(data:any):UInt256;
static ZERO:UInt256;
static MAX:UInt256;
}
export class Int512 extends BinaryInt<Int512> {
static from(data:any):Int512;
static ZERO:Int512;
static MIN:Int512;
static MAX:Int512;
}
export class UInt512 extends BinaryInt<UInt512> {
static from(data:any):UInt512;
static ZERO:UInt512;
static MAX:UInt512;
}
export class IntVar extends BinaryInt<IntVar> {
static from(data:any):IntVar;
static ZERO(size:number):IntVar;
static MIN(size:number):IntVar;
static MAX(size:number):IntVar;
}
export class UIntVar extends BinaryInt<UIntVar> {
static from(data:any):IntVar;
static ZERO(size:number):IntVar;
static MAX(size:number):IntVar;
}