mirror of
https://github.com/voltrevo/ValueScript.git
synced 2026-04-18 03:00:27 -04:00
Simplify builtins
This commit is contained in:
@@ -15,8 +15,6 @@ use super::{
|
||||
|
||||
pub struct ArrayBuiltin {}
|
||||
|
||||
pub static ARRAY_BUILTIN: ArrayBuiltin = ArrayBuiltin {};
|
||||
|
||||
impl BuiltinObject for ArrayBuiltin {
|
||||
fn bo_name() -> &'static str {
|
||||
"Array"
|
||||
|
||||
@@ -11,8 +11,6 @@ use super::builtin_object::BuiltinObject;
|
||||
|
||||
pub struct BooleanBuiltin {}
|
||||
|
||||
pub static BOOLEAN_BUILTIN: BooleanBuiltin = BooleanBuiltin {};
|
||||
|
||||
impl BuiltinObject for BooleanBuiltin {
|
||||
fn bo_name() -> &'static str {
|
||||
"Boolean"
|
||||
|
||||
@@ -9,8 +9,6 @@ use super::builtin_object::BuiltinObject;
|
||||
|
||||
pub struct DebugBuiltin {}
|
||||
|
||||
pub static DEBUG_BUILTIN: DebugBuiltin = DebugBuiltin {};
|
||||
|
||||
impl BuiltinObject for DebugBuiltin {
|
||||
fn bo_name() -> &'static str {
|
||||
"Debug"
|
||||
|
||||
@@ -16,8 +16,6 @@ use super::builtin_object::BuiltinObject;
|
||||
|
||||
pub struct ErrorBuiltin {}
|
||||
|
||||
pub static ERROR_BUILTIN: ErrorBuiltin = ErrorBuiltin {};
|
||||
|
||||
impl BuiltinObject for ErrorBuiltin {
|
||||
fn bo_name() -> &'static str {
|
||||
"Error"
|
||||
|
||||
@@ -10,8 +10,6 @@ use super::builtin_object::BuiltinObject;
|
||||
|
||||
pub struct MathBuiltin {}
|
||||
|
||||
pub static MATH_BUILTIN: MathBuiltin = MathBuiltin {};
|
||||
|
||||
impl BuiltinObject for MathBuiltin {
|
||||
fn bo_name() -> &'static str {
|
||||
"Math"
|
||||
|
||||
@@ -12,21 +12,28 @@ pub mod type_error_builtin;
|
||||
|
||||
use valuescript_common::BUILTIN_COUNT;
|
||||
|
||||
use crate::ValTrait;
|
||||
use crate::vs_value::{ToVal, Val};
|
||||
|
||||
pub static BUILTIN_VALS: [&'static (dyn ValTrait + Sync); BUILTIN_COUNT] = [
|
||||
&debug_builtin::DEBUG_BUILTIN,
|
||||
&math_builtin::MATH_BUILTIN,
|
||||
&string_builtin::STRING_BUILTIN,
|
||||
&number_builtin::NUMBER_BUILTIN,
|
||||
&boolean_builtin::BOOLEAN_BUILTIN,
|
||||
&array_builtin::ARRAY_BUILTIN,
|
||||
&number_builtin::IS_FINITE,
|
||||
&number_builtin::IS_NAN,
|
||||
&number_builtin::PARSE_FLOAT,
|
||||
&number_builtin::PARSE_INT,
|
||||
&error_builtin::ERROR_BUILTIN,
|
||||
&type_error_builtin::TYPE_ERROR_BUILTIN,
|
||||
&range_error_builtin::RANGE_ERROR_BUILTIN,
|
||||
&symbol_builtin::SYMBOL_BUILTIN,
|
||||
use self::{
|
||||
array_builtin::ArrayBuiltin, boolean_builtin::BooleanBuiltin, debug_builtin::DebugBuiltin,
|
||||
error_builtin::ErrorBuiltin, math_builtin::MathBuiltin, number_builtin::NumberBuiltin,
|
||||
range_error_builtin::RangeErrorBuiltin, string_builtin::StringBuiltin,
|
||||
symbol_builtin::SymbolBuiltin, type_error_builtin::TypeErrorBuiltin,
|
||||
};
|
||||
|
||||
pub static BUILTIN_VALS: [fn() -> Val; BUILTIN_COUNT] = [
|
||||
|| DebugBuiltin {}.to_val(),
|
||||
|| MathBuiltin {}.to_val(),
|
||||
|| StringBuiltin {}.to_val(),
|
||||
|| NumberBuiltin {}.to_val(),
|
||||
|| BooleanBuiltin {}.to_val(),
|
||||
|| ArrayBuiltin {}.to_val(),
|
||||
|| number_builtin::IS_FINITE.to_val(),
|
||||
|| number_builtin::IS_NAN.to_val(),
|
||||
|| number_builtin::PARSE_FLOAT.to_val(),
|
||||
|| number_builtin::PARSE_INT.to_val(),
|
||||
|| ErrorBuiltin {}.to_val(),
|
||||
|| TypeErrorBuiltin {}.to_val(),
|
||||
|| RangeErrorBuiltin {}.to_val(),
|
||||
|| SymbolBuiltin {}.to_val(),
|
||||
];
|
||||
|
||||
@@ -14,8 +14,6 @@ use super::builtin_object::BuiltinObject;
|
||||
|
||||
pub struct NumberBuiltin {}
|
||||
|
||||
pub static NUMBER_BUILTIN: NumberBuiltin = NumberBuiltin {};
|
||||
|
||||
impl BuiltinObject for NumberBuiltin {
|
||||
fn bo_name() -> &'static str {
|
||||
"Number"
|
||||
|
||||
@@ -15,8 +15,6 @@ use super::builtin_object::BuiltinObject;
|
||||
|
||||
pub struct RangeErrorBuiltin {}
|
||||
|
||||
pub static RANGE_ERROR_BUILTIN: RangeErrorBuiltin = RangeErrorBuiltin {};
|
||||
|
||||
impl BuiltinObject for RangeErrorBuiltin {
|
||||
fn bo_name() -> &'static str {
|
||||
"RangeError"
|
||||
|
||||
@@ -15,8 +15,6 @@ use super::range_error_builtin::ToRangeError;
|
||||
|
||||
pub struct StringBuiltin {}
|
||||
|
||||
pub static STRING_BUILTIN: StringBuiltin = StringBuiltin {};
|
||||
|
||||
impl BuiltinObject for StringBuiltin {
|
||||
fn bo_name() -> &'static str {
|
||||
"String"
|
||||
|
||||
@@ -10,8 +10,6 @@ use super::builtin_object::BuiltinObject;
|
||||
|
||||
pub struct SymbolBuiltin {}
|
||||
|
||||
pub static SYMBOL_BUILTIN: SymbolBuiltin = SymbolBuiltin {};
|
||||
|
||||
impl BuiltinObject for SymbolBuiltin {
|
||||
fn bo_name() -> &'static str {
|
||||
"Symbol"
|
||||
|
||||
@@ -15,8 +15,6 @@ use super::builtin_object::BuiltinObject;
|
||||
|
||||
pub struct TypeErrorBuiltin {}
|
||||
|
||||
pub static TYPE_ERROR_BUILTIN: TypeErrorBuiltin = TypeErrorBuiltin {};
|
||||
|
||||
impl BuiltinObject for TypeErrorBuiltin {
|
||||
fn bo_name() -> &'static str {
|
||||
"TypeError"
|
||||
|
||||
@@ -143,7 +143,7 @@ impl BytecodeDecoder {
|
||||
Val::Void => Val::Undefined,
|
||||
val => val,
|
||||
},
|
||||
BytecodeType::Builtin => Val::Static(BUILTIN_VALS[self.decode_varsize_uint()]),
|
||||
BytecodeType::Builtin => BUILTIN_VALS[self.decode_varsize_uint()](),
|
||||
BytecodeType::Class => VsClass {
|
||||
constructor: self.decode_val(registers),
|
||||
instance_prototype: self.decode_val(registers),
|
||||
|
||||
Reference in New Issue
Block a user