Rename NumberType to JsNumber

This commit is contained in:
BorysLevytskyi
2023-05-08 17:27:38 +02:00
parent a12274940e
commit 3ee06ac9c0
7 changed files with 31 additions and 31 deletions

View File

@@ -2,7 +2,7 @@ import {numberParser} from './numberParser';
import { ExpressionElement as ExpressionElement } from './expression-interfaces';
import { NumberBase } from '../core/formatter';
import { INT32_MAX_VALUE, INT32_MIN_VALUE, INT64_MAX_VALUE, INT64_MIN_VALUE } from '../core/const';
import { NumberType } from '../core/types';
import { JsNumber } from '../core/types';
var globalId : number = 1;
@@ -10,11 +10,11 @@ var globalId : number = 1;
// Represents scalar numeric value
export default class ScalarValue implements ExpressionElement {
id: number;
value: NumberType;
value: JsNumber;
base: NumberBase;
isOperator: boolean;
constructor(value : NumberType, base?: NumberBase, is32Limit?: boolean) {
constructor(value : JsNumber, base?: NumberBase, is32Limit?: boolean) {
ScalarValue.validateSupported(value);
@@ -32,7 +32,7 @@ export default class ScalarValue implements ExpressionElement {
return typeof this.value === 'bigint';
}
setValue(value : NumberType) {
setValue(value : JsNumber) {
this.value = value;
}
@@ -44,7 +44,7 @@ export default class ScalarValue implements ExpressionElement {
return this
}
static validateSupported(num : NumberType) {
static validateSupported(num : JsNumber) {
if(typeof num == "bigint" && (num < INT64_MIN_VALUE || num > INT64_MAX_VALUE)) {
throw new Error(`64-bit numbers are supported in range from ${INT64_MIN_VALUE} to ${INT64_MAX_VALUE}`);

View File

@@ -1,5 +1,5 @@
import calc from "../core/calc";
import { NumberType } from "../core/types";
import { JsNumber } from "../core/types";
import ScalarValue from "./ScalarValue";
const engine = {
@@ -14,22 +14,22 @@ const engine = {
}
};
function evalute(op1 : NumberType, operator: string, op2 : NumberType) : NumberType{
function evalute(op1 : JsNumber, operator: string, op2 : JsNumber) : JsNumber{
const a = equalizeType(op2, op1) as any;
const b = equalizeType(op1, op2) as any;
switch(operator) {
case ">>": return (a >> b) as (NumberType);
case ">>>": return (a >>> b) as (NumberType);
case ">>": return (a >> b) as (JsNumber);
case ">>>": return (a >>> b) as (JsNumber);
case "<<": return calc.rshift(a, b, calc.maxBitSize(a));
case "&": return (b & a) as (NumberType);
case "|": return (b | a) as (NumberType);
case "^": return (b ^ a) as (NumberType);
case "&": return (b & a) as (JsNumber);
case "|": return (b | a) as (JsNumber);
case "^": return (b ^ a) as (JsNumber);
default: throw new Error(operator + " operator is not supported");
}
}
function equalizeType(source : NumberType, dest : NumberType) : NumberType {
function equalizeType(source : JsNumber, dest : JsNumber) : JsNumber {
return typeof source == 'bigint' && typeof dest != 'bigint'
? BigInt(dest)

View File

@@ -1,6 +1,6 @@
import { INT32_MAX_VALUE, INT32_MIN_VALUE } from "../core/const";
import { NumberBase } from "../core/formatter";
import { NumberType } from "../core/types";
import { JsNumber } from "../core/types";
const decimalRegex = /^-?\d+[l,L]?$/;
const hexRegex = /^-?0x[0-9,a-f]+[l,L]?$/i;
@@ -9,11 +9,11 @@ const binRegex = /^-?0b[0-1]+[l,L]?$/i;
interface ParserConfig {
regex: RegExp,
base: NumberBase,
parse: (input: string) => NumberType
parse: (input: string) => JsNumber
}
export interface ParsedNumber {
value: NumberType;
value: JsNumber;
base: NumberBase;
input: string;
}
@@ -66,7 +66,7 @@ class NumberParser {
const MAX_SAFE_INTn = BigInt(INT32_MAX_VALUE);
const MIN_SAFE_INTn = BigInt(INT32_MIN_VALUE);
function parseIntSafe(input : string, radix: number) : NumberType {
function parseIntSafe(input : string, radix: number) : JsNumber {
const bigIntStr = input.replace('-', '').replace('l', '').replace('L', '');
let bigInt = BigInt(bigIntStr);