rusteal_codegen/rust_gen/
func_ids.rs1use crate::context::FuncEntry;
2
3pub fn generate_rust_func_ids(entries: &[FuncEntry]) -> String {
4 let mut out = String::with_capacity(entries.len() * 60 + 256);
5 out.push_str("// Auto-generated by rusteal-codegen. Do not edit.\n\n");
6 out.push_str("#![allow(dead_code)]\n\n");
7
8 for entry in entries {
9 let const_name = func_id_const_name(&entry.class_name, &entry.func_name);
10 let id = entry.func_id;
11 out.push_str(&format!("pub const {const_name}: u32 = {id};\n"));
12 }
13
14 out.push('\n');
15
16 out.push_str(&format!("pub const FUNC_COUNT: u32 = {};\n", entries.len()));
17
18 out
19}
20
21pub fn func_id_const_name(class_name: &str, func_name: &str) -> String {
22 let class = to_screaming_snake(class_name);
23 let func = to_screaming_snake(func_name);
24 format!("{class}_{func}")
25}
26
27fn to_screaming_snake(name: &str) -> String {
28 let snake = crate::naming::to_snake_case(name);
29 snake.to_ascii_uppercase()
30}