#[derive(Clone, Debug, PartialEq, Eq)]
pub struct KernelNaming {
public_name: String,
}
impl KernelNaming {
const USER_IMPL_PREFIX: &'static str = "__cutile_user_impl_";
pub fn new(public_name: &str) -> Self {
Self {
public_name: public_name.to_string(),
}
}
pub fn canonical_public_name(name: &str) -> String {
match Self::public_name_from_user_impl_name(name) {
Some(public_name) => public_name,
None => name.to_string(),
}
}
pub fn public_name_from_user_impl_name(name: &str) -> Option<String> {
name.strip_prefix(Self::USER_IMPL_PREFIX)
.map(|s| s.to_string())
}
pub fn public_name(&self) -> &str {
&self.public_name
}
pub fn apply_name(&self) -> String {
format!("{}_apply", self.public_name)
}
pub fn device_op_helper_name(&self) -> String {
format!("{}_op", self.public_name)
}
pub fn user_impl_name(&self) -> String {
format!("{}{}", Self::USER_IMPL_PREFIX, self.public_name)
}
pub fn entry_name(&self) -> String {
format!("{}_entry", self.public_name)
}
}