xref: /aosp_15_r20/external/skia/experimental/rust_cxx/hype-bridge.rs (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1*c8dee2aaSAndroid Build Coastguard Worker use cxx;
2*c8dee2aaSAndroid Build Coastguard Worker #[cxx::bridge(namespace = "hype_train")]
3*c8dee2aaSAndroid Build Coastguard Worker mod ffi {
4*c8dee2aaSAndroid Build Coastguard Worker 
5*c8dee2aaSAndroid Build Coastguard Worker     pub struct HypeOutput {
6*c8dee2aaSAndroid Build Coastguard Worker         output: String,
7*c8dee2aaSAndroid Build Coastguard Worker         new_len: usize,
8*c8dee2aaSAndroid Build Coastguard Worker     }
9*c8dee2aaSAndroid Build Coastguard Worker 
10*c8dee2aaSAndroid Build Coastguard Worker     extern "Rust" {
hypeify(input: String, num_exclamations: i32) -> HypeOutput11*c8dee2aaSAndroid Build Coastguard Worker         fn hypeify(input: String, num_exclamations: i32) -> HypeOutput;
12*c8dee2aaSAndroid Build Coastguard Worker     }
13*c8dee2aaSAndroid Build Coastguard Worker 
14*c8dee2aaSAndroid Build Coastguard Worker }
15*c8dee2aaSAndroid Build Coastguard Worker 
16*c8dee2aaSAndroid Build Coastguard Worker use crate::ffi::HypeOutput;
17*c8dee2aaSAndroid Build Coastguard Worker 
hypeify(input: String, num_exclamations: i32) -> HypeOutput18*c8dee2aaSAndroid Build Coastguard Worker pub fn hypeify(input: String, num_exclamations: i32) -> HypeOutput {
19*c8dee2aaSAndroid Build Coastguard Worker     let mut res = input.to_uppercase();
20*c8dee2aaSAndroid Build Coastguard Worker     for _ in 0..num_exclamations  {
21*c8dee2aaSAndroid Build Coastguard Worker         res += "!"
22*c8dee2aaSAndroid Build Coastguard Worker     }
23*c8dee2aaSAndroid Build Coastguard Worker     return HypeOutput{
24*c8dee2aaSAndroid Build Coastguard Worker         new_len: res.len(), output: res,
25*c8dee2aaSAndroid Build Coastguard Worker     }
26*c8dee2aaSAndroid Build Coastguard Worker 
27*c8dee2aaSAndroid Build Coastguard Worker }