use crate::context::FuncEntry;
pub fn generate_rust_func_ids(entries: &[FuncEntry]) -> String {
let mut out = String::with_capacity(entries.len() * 60 + 256);
out.push_str("// Auto-generated by rusteal-codegen. Do not edit.\n\n");
out.push_str("#![allow(dead_code)]\n\n");
for entry in entries {
let const_name = func_id_const_name(&entry.class_name, &entry.func_name);
let id = entry.func_id;
out.push_str(&format!("pub const {const_name}: u32 = {id};\n"));
}
out.push('\n');
out.push_str(&format!("pub const FUNC_COUNT: u32 = {};\n", entries.len()));
out
}
pub fn func_id_const_name(class_name: &str, func_name: &str) -> String {
let class = to_screaming_snake(class_name);
let func = to_screaming_snake(func_name);
format!("{class}_{func}")
}
fn to_screaming_snake(name: &str) -> String {
let snake = crate::naming::to_snake_case(name);
snake.to_ascii_uppercase()
}