MCPcopy Create free account
hub / github.com/bytecodealliance/wit-bindgen / namespace

Function namespace

crates/cpp/src/lib.rs:778–802  ·  view source on GitHub ↗

determine namespace (for the lifted C++ function)

(resolve: &Resolve, owner: &TypeOwner, guest_export: bool, opts: &Opts)

Source from the content-addressed store, hash-verified

776
777// determine namespace (for the lifted C++ function)
778fn namespace(resolve: &Resolve, owner: &TypeOwner, guest_export: bool, opts: &Opts) -> Vec<String> {
779 let mut result = Vec::default();
780 if let Some(prefix) = &opts.internal_prefix {
781 result.push(prefix.clone());
782 }
783 if guest_export {
784 result.push(String::from("exports"));
785 }
786 match owner {
787 TypeOwner::World(w) => result.push(to_c_ident(&resolve.worlds[*w].name)),
788 TypeOwner::Interface(i) => {
789 let iface = &resolve.interfaces[*i];
790 let pkg_id = iface.package.unwrap();
791 let pkg = &resolve.packages[pkg_id];
792 result.push(to_c_ident(&pkg.name.namespace));
793 // Use name_package_module to get version-specific package names
794 result.push(to_c_ident(&name_package_module(resolve, pkg_id)));
795 if let Some(name) = &iface.name {
796 result.push(to_c_ident(name));
797 }
798 }
799 TypeOwner::None => (),
800 }
801 result
802}
803
804impl SourceWithState {
805 fn change_namespace(&mut self, target: &[String]) {

Callers 14

import_interfaceMethod · 0.85
export_interfaceMethod · 0.85
import_funcsMethod · 0.85
export_funcsMethod · 0.85
func_namespace_nameMethod · 0.85
class_namespaceMethod · 0.85
generate_functionMethod · 0.85
scoped_type_nameMethod · 0.85
type_recordMethod · 0.85
type_resourceMethod · 0.85
type_flagsMethod · 0.85
type_variantMethod · 0.85

Calls 3

to_c_identFunction · 0.85
name_package_moduleFunction · 0.85
pushMethod · 0.45

Tested by

no test coverage detected