use sim_kernel::{
Cx, LibId, OpKey, Result, Symbol,
standard::{publish_organ_claims, publish_organ_claims_for_lib},
};
pub fn namespace_organ_symbol() -> Symbol {
Symbol::qualified("organ", "namespace")
}
pub fn namespace_package_op_key() -> OpKey {
namespace_op_key("package")
}
pub fn namespace_module_op_key() -> OpKey {
namespace_op_key("module")
}
pub fn namespace_export_op_key() -> OpKey {
namespace_op_key("export")
}
pub fn namespace_import_op_key() -> OpKey {
namespace_op_key("import")
}
pub fn namespace_rename_op_key() -> OpKey {
namespace_op_key("rename")
}
pub fn namespace_shadow_op_key() -> OpKey {
namespace_op_key("shadow")
}
pub fn namespace_op_keys() -> Vec<OpKey> {
[
namespace_package_op_key(),
namespace_module_op_key(),
namespace_export_op_key(),
namespace_import_op_key(),
namespace_rename_op_key(),
namespace_shadow_op_key(),
]
.into()
}
pub fn publish_namespace_organ_claims(cx: &mut Cx) -> Result<()> {
publish_organ_claims(cx, namespace_organ_symbol(), namespace_op_keys())
}
pub fn publish_namespace_organ_claims_for_lib(cx: &mut Cx, lib_id: LibId) -> Result<()> {
publish_organ_claims_for_lib(cx, lib_id, namespace_organ_symbol(), namespace_op_keys())
}
fn namespace_op_key(name: &str) -> OpKey {
OpKey::new(Symbol::new("namespace"), Symbol::new(name), 1)
}