litex/common/
mangled_fn_param.rs1use crate::obj::Obj;
2use std::collections::HashMap;
3
4pub fn mangled_fn_param_names(user_written_names: &[String], prefix: &str) -> Vec<String> {
6 user_written_names
7 .iter()
8 .map(|u| format!("{}{}", prefix, u))
9 .collect()
10}
11
12pub fn fn_param_substitution_map(
14 user_written_names: &[String],
15 mangled_names: &[String],
16) -> HashMap<String, Obj> {
17 debug_assert_eq!(user_written_names.len(), mangled_names.len());
18 let mut map = HashMap::with_capacity(user_written_names.len());
19 for (u, m) in user_written_names.iter().zip(mangled_names.iter()) {
20 map.insert(u.clone(), m.clone().into());
21 }
22 map
23}
24
25pub fn mangled_fn_param_binding(
27 user_written_names: &[String],
28 prefix: &str,
29) -> (Vec<String>, HashMap<String, Obj>) {
30 let mangled = mangled_fn_param_names(user_written_names, prefix);
31 let map = fn_param_substitution_map(user_written_names, &mangled);
32 (mangled, map)
33}