44
src/obj/bool.rs
Normal file
44
src/obj/bool.rs
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
use crate::obj::{Obj, VTable};
|
||||||
|
use crate::syn::span::Span;
|
||||||
|
use crate::vm::{error::*, machine::Machine};
|
||||||
|
use gc::{Finalize, Trace};
|
||||||
|
|
||||||
|
pub type Bool = bool;
|
||||||
|
|
||||||
|
#[derive(Debug, Trace, Finalize)]
|
||||||
|
pub struct BoolObj {
|
||||||
|
value: Bool,
|
||||||
|
vtable: VTable,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl BoolObj {
|
||||||
|
pub fn new(value: Bool) -> Self {
|
||||||
|
BoolObj {
|
||||||
|
value,
|
||||||
|
vtable: vtable! {},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[allow(dead_code)]
|
||||||
|
pub fn value(&self) -> Bool {
|
||||||
|
self.value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Obj for BoolObj {
|
||||||
|
fn vtable(&self) -> &VTable {
|
||||||
|
&self.vtable
|
||||||
|
}
|
||||||
|
|
||||||
|
fn vtable_mut(&mut self) -> &mut VTable {
|
||||||
|
&mut self.vtable
|
||||||
|
}
|
||||||
|
|
||||||
|
fn call(&self, call_site: Option<Span>, _: &mut Machine) -> Result<()> {
|
||||||
|
Err(RuntimeError::CannotCall("bool value".to_string()).with_location(call_site))
|
||||||
|
}
|
||||||
|
|
||||||
|
fn as_any(&self) -> &(dyn std::any::Any + 'static) {
|
||||||
|
self
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
#[macro_use]
|
#[macro_use]
|
||||||
mod macros;
|
mod macros;
|
||||||
|
pub mod bool;
|
||||||
pub mod builtin;
|
pub mod builtin;
|
||||||
pub mod float;
|
pub mod float;
|
||||||
pub mod int;
|
pub mod int;
|
||||||
@@ -7,6 +8,7 @@ pub mod quote;
|
|||||||
pub mod str;
|
pub mod str;
|
||||||
|
|
||||||
pub mod prelude {
|
pub mod prelude {
|
||||||
|
pub use crate::obj::bool::*;
|
||||||
pub use crate::obj::builtin::*;
|
pub use crate::obj::builtin::*;
|
||||||
pub use crate::obj::float::*;
|
pub use crate::obj::float::*;
|
||||||
pub use crate::obj::int::*;
|
pub use crate::obj::int::*;
|
||||||
|
|||||||
Reference in New Issue
Block a user