rusteal-codegen 0.8.0

Code generator: UHT JSON to Rust bindings and C++ wrappers for rusteal
Documentation
use crate::context::FuncEntry;
use crate::rust_gen::func_ids::func_id_const_name;

pub fn generate_cpp_func_ids(entries: &[FuncEntry]) -> String {
    let mut out = String::with_capacity(entries.len() * 60 + 512);

    out.push_str("// Auto-generated by rusteal-codegen. Do not edit.\n\n");
    out.push_str("#pragma once\n\n");
    out.push_str("#include <cstdint>\n\n");
    out.push_str("namespace RustealFuncId {\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!("    constexpr uint32_t {const_name} = {id};\n"));
    }

    out.push('\n');

    out.push_str(&format!(
        "    constexpr uint32_t FUNC_COUNT = {};\n",
        entries.len()
    ));

    out.push_str("\n} // namespace RustealFuncId\n");

    out
}