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]
|
||||
mod macros;
|
||||
pub mod bool;
|
||||
pub mod builtin;
|
||||
pub mod float;
|
||||
pub mod int;
|
||||
@@ -7,6 +8,7 @@ pub mod quote;
|
||||
pub mod str;
|
||||
|
||||
pub mod prelude {
|
||||
pub use crate::obj::bool::*;
|
||||
pub use crate::obj::builtin::*;
|
||||
pub use crate::obj::float::*;
|
||||
pub use crate::obj::int::*;
|
||||
|
||||
Reference in New Issue
Block a user