lib-utils-ts
Version:
<img src="https://img.shields.io/npm/v/lib-utils-ts"/> <img src="https://img.shields.io/snyk/vulnerabilities/npm/lib-utils-ts"/> <img src="https://img.shields.io/npm/l/lib-utils-ts"/> <img src="https://img.shields.io/github/languages/top/devGnode/lib-util
349 lines (341 loc) • 5.63 kB
text/typescript
import {Byte} from "./Byte";
import {Operator} from "./Operator";
import {IConsumer} from "../Interface";
import {Pointer} from "./Pointer";
import {BinArray} from "./BinArray";
import {ENCODING} from "../file/charset/ENCODING";
export type consumerFnResult<T,R> = ( o: T ) => R | void
export interface ConsumerResult<T,R> extends IConsumer<T>{
accept:consumerFnResult<T,R>
/***
*
*/
get( ):R
/***
*
*/
clear():void
}
export interface spliteratorResult<T,R>{
/***
*
*/
tryAdvance( action: ConsumerResult<T,R> ):boolean
forEachRemaining(action: ConsumerResult<T,R>):void
}
/**/
export interface ConvertReserved<T,R> extends spliteratorResult<T,R>{}
/***
*
*/
export interface convert {
/***
*
*/
hex(a:number)
/***
*
*/
octal(value:number):string
/***
*
*/
bin(value:number):string
/***
*
*/
base(value:number, radix:number, consumer:ConsumerResult<number,string>):string
}
/***
* @primitiveNumber
*/
export interface primitiveNumber extends Number{
/***
*
*/
isOverflow( ):boolean
/***
*
*/
signed():boolean
/***
*
*/
isPositive( ):boolean
/***
*
*/
sizeOf( ):number
/***
*
*/
endian( ):primitiveNumber
/***
*
*/
random( min:primitiveNumber, max:primitiveNumber):primitiveNumber
/***
*
*/
overflowThrow( message:string ):void
/***
*
*/
getType():string
/***
*
*/
assert( message:string ):primitiveNumber
/***
*
*/
newer(value:Number ):primitiveNumber
/***
*
*/
valueOf():number
/***
*
*/
toHex(opts:number):string
/***
*
*/
toBin():string
/***
*
*/
toOctal():number
/***
*
*/
int2Str():string
/***
*
*/
toUnsigned():primitiveNumber
/***
*
*/
hasFloat():boolean
}
/****
* @BYTE interface
*/
export interface BYTE {
/***
*/
toInt8():int8
/***
*/
// operators( ):Operator<BYTE>
/***
*/
endian():BYTE
}
/****
* @uint8 interface
*/
export interface uint8 extends BYTE{}
/****
* @int8 interface
*/
export interface int8 extends primitiveNumber{
/***
*
*/
toUint8():Byte
}
/****
* @int8 interface
*/
export interface WORD extends primitiveNumber{
/***
*
*/
toInt16():int16
operators( ):Operator<WORD>
endian():WORD
}
/****
* @int16 interface
*/
export interface int16 extends primitiveNumber{
/***
*
*/
toUint16():WORD
operators( ):Operator<int16>
endian():int16
}
/****
* @DWORD interface
*/
export interface DWORD extends primitiveNumber{
/***
*
*/
toInt32():int32
operators( ):Operator<DWORD>
toFloat():float
}
export interface uint32 extends DWORD{}
/****
* @int32 interface
*/
export interface int32 extends primitiveNumber{
/***
*
*/
toUint32():DWORD
operators( ):Operator<int32>
}
/**
* @float
*/
export interface float extends primitiveNumber{
/***
*
*/
toUint32():DWORD
operators( ):Operator<float>
}
/***
* @QWORD
*/
export interface QWORD extends primitiveNumber{
/***
*
*/
toInt64():int64
operators( ):Operator<QWORD>
}
/***
* @int64
*/
export interface int64 extends primitiveNumber{
/***
*
*/
toUint64():QWORD
operators( ):Operator<int64>
}
/***
* @double
*/
export interface double extends primitiveNumber{
/***
*
*/
toQword():QWORD
operators( ):Operator<double>
toQword( ):QWORD
}
/***
* @operators<T extends Number,U>
*/
export interface operators<T extends Number,U> {
/***
*
*/
add( a:T, b:T ):U
/***
*
*/
mul( a:T, b:T ):U
/***
*
*/
div( a:T, b:T ):U
/***
*
*/
sous( a:T, b:T ):U
/***
*
*/
inc( a:T ):U
/***
*
*/
dec( a:T ):U
/***
*
*/
and( a:T, b:T ):U
/***
*
*/
or( a:T, b:T ):U
/***
*
*/
xor( a:T, b:T ):U
}
/***
*
*/
export interface primitiveString {
sizeOf():number
getType():string
toHex():string
}
/***
*
*/
export interface char extends primitiveString{
toUint8( ):uint8
valueOf(): string
}
/***
*
*/
export interface cString extends primitiveString{
hasPointer( ):boolean
getPointer():any //Pointer<BitsType>
getCharset():ENCODING
valueOf():string
}
/***
*
*/
export interface pointer<T> extends primitiveString{
pointerName():string
getRange( ):number
getValue( ):T
}
/***
*/
export interface primitiveString {
sizeOf():number
getType():string
}
/***
*/
export interface char extends primitiveString{
toUint8( ):uint8
valueOf(): string
}
/***
*/
export interface cString extends primitiveString{
hasPointer( ):boolean
getPointer():Pointer<BitsType>
valueOf():string
}
/***
*/
export interface pointer<T> extends primitiveString{
pointerName():string
getRange( ):number
getValue( ):T
}
/****
* Types
*/
export type BitsType = (BYTE|int8|uint8|WORD|int16|DWORD|int32|uint32|QWORD|int64|float|double) & primitiveNumber
export type BitsTypeStr = (char|pointer<BitsType|BitsTypeStr>|cString) & primitiveString
export type BitsTypeArr = BinArray<BitsType>
//
export type s_bits = { [ index:string]:number }
export type pvoidStruct = { [ index: string]:primitiveNumber|BitsType|BitsTypeStr|s_bits|BitsTypeArr|Function };