38 lines
890 B
Rust
38 lines
890 B
Rust
|
use super::arithmetic::ArithmeticPackage;
|
||
|
use super::create_new_package;
|
||
|
use super::iter_basic::BasicIteratorPackage;
|
||
|
use super::logic::LogicPackage;
|
||
|
use super::string_basic::BasicStringPackage;
|
||
|
use super::{Package, PackageLibrary, PackageLibraryStore};
|
||
|
|
||
|
use crate::stdlib::ops::Deref;
|
||
|
|
||
|
pub struct CorePackage(PackageLibrary);
|
||
|
|
||
|
impl Deref for CorePackage {
|
||
|
type Target = PackageLibrary;
|
||
|
|
||
|
fn deref(&self) -> &PackageLibrary {
|
||
|
&self.0
|
||
|
}
|
||
|
}
|
||
|
|
||
|
impl Package for CorePackage {
|
||
|
fn new() -> Self {
|
||
|
let mut pkg = create_new_package();
|
||
|
Self::init(&mut pkg);
|
||
|
Self(pkg.into())
|
||
|
}
|
||
|
|
||
|
fn init(lib: &mut PackageLibraryStore) {
|
||
|
ArithmeticPackage::init(lib);
|
||
|
LogicPackage::init(lib);
|
||
|
BasicStringPackage::init(lib);
|
||
|
BasicIteratorPackage::init(lib);
|
||
|
}
|
||
|
|
||
|
fn get(&self) -> PackageLibrary {
|
||
|
self.0.clone()
|
||
|
}
|
||
|
}
|