use alloc::{sync::Arc, vec::Vec};
use miden_assembly_syntax::module::ModuleInfo;
use miden_mast_package::{ManifestValidationError, MastForest, Package};
pub use miden_project::Linkage;
#[derive(Clone)]
pub struct LinkLibrary {
pub package: Arc<Package>,
pub linkage: Linkage,
}
impl LinkLibrary {
pub fn from_package(package: Arc<Package>) -> Self {
Self { package, linkage: Linkage::Dynamic }
}
pub fn with_linkage(mut self, linkage: Linkage) -> Self {
self.linkage = linkage;
self
}
#[inline(always)]
pub fn mast(&self) -> &Arc<MastForest> {
self.package.mast_forest()
}
#[inline]
pub fn module_infos(&self) -> Result<Vec<ModuleInfo>, ManifestValidationError> {
self.package.try_module_infos()
}
}