Refine packages plumbing.
This commit is contained in:
@@ -1,37 +1,13 @@
|
||||
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;
|
||||
use crate::def_package;
|
||||
|
||||
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()
|
||||
}
|
||||
}
|
||||
def_package!(CorePackage:"_Core_ package containing basic facilities.", lib, {
|
||||
ArithmeticPackage::init(lib);
|
||||
LogicPackage::init(lib);
|
||||
BasicStringPackage::init(lib);
|
||||
BasicIteratorPackage::init(lib);
|
||||
});
|
||||
|
Reference in New Issue
Block a user