Skip to content

Commit

Permalink
Handles nullable input
Browse files Browse the repository at this point in the history
  • Loading branch information
gupnik committed Jan 27, 2025
1 parent 4b7d462 commit cc3bd2c
Showing 1 changed file with 16 additions and 6 deletions.
22 changes: 16 additions & 6 deletions codegen-v2/src/codegen/cpp/code_gen.rs
Original file line number Diff line number Diff line change
Expand Up @@ -209,21 +209,31 @@ fn generate_return_type(func: &TWStaticFunction, converted_args: &Vec<String>) -

fn generate_conversion_code_with_var_name(ty: &str, name: &str) -> Result<(String, String)> {
match ty {
"TWString *_Nonnull" | "TWString *_Nullable" => {
"TWString *_Nonnull" => {
let mut conversion_code = String::new();
writeln!(
&mut conversion_code,
" auto& {name}String = *reinterpret_cast<const std::string*>({name});",
name = name
"\tauto& {name}String = *reinterpret_cast<const std::string*>({name});\n\
\tconst Rust::TWStringWrapper {name}RustStr = {name}String;"
)
.map_err(|e| BadFormat(e.to_string()))?;
Ok((conversion_code, format!("{}RustStr.get()", name)))
}
"TWString *_Nullable" => {
let mut conversion_code = String::new();
writeln!(
&mut conversion_code,
" const Rust::TWStringWrapper {name}RustStr = {name}String;",
name = name
"\tconst TW::Rust::TWString* {name}Ptr;\n\
\tif ({name} != nullptr) {{\n\
\t\tauto& {name}String = *reinterpret_cast<const std::string*>({name});\n\
\t\tconst Rust::TWStringWrapper {name}RustStr = {name}String;\n\
\t\t{name}Ptr = {name}RustStr.get();\n\
\t}} else {{\n\
\t\t{name}Ptr = nullptr;\n\
\t}}"
)
.map_err(|e| BadFormat(e.to_string()))?;
Ok((conversion_code, format!("{}RustStr.get()", name)))
Ok((conversion_code, format!("{}Ptr", name)))
}
_ => Ok(("".to_string(), name.to_string())),
}
Expand Down

0 comments on commit cc3bd2c

Please sign in to comment.