Skip to content

Commit 3b133e9

Browse files
authored
Merge pull request #53 from stepfunc/feature/c-prefix
Add prefix to generated C API. Change enum names to be more idiomatic.
2 parents e6afa1f + 5ca9573 commit 3b133e9

File tree

18 files changed

+372
-275
lines changed

18 files changed

+372
-275
lines changed

generators/c-oo-bindgen/src/doc.rs

Lines changed: 20 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use crate::CFormatting;
2-
use heck::{CamelCase, SnakeCase};
2+
use heck::{ShoutySnakeCase, SnakeCase};
33
use oo_bindgen::doc::*;
44
use oo_bindgen::formatting::*;
55
use oo_bindgen::Library;
@@ -54,7 +54,7 @@ fn reference_print(
5454
}
5555
DocReference::Class(class_name) => {
5656
let handle = lib.find_class_declaration(class_name).unwrap();
57-
f.write(&format!("@ref {}", handle.to_c_type()))?;
57+
f.write(&format!("@ref {}", handle.to_c_type(&lib.c_ffi_prefix)))?;
5858
}
5959
DocReference::ClassMethod(class_name, method_name) => {
6060
let func_name = &lib
@@ -63,25 +63,30 @@ fn reference_print(
6363
.find_method(method_name)
6464
.unwrap()
6565
.name;
66-
f.write(&format!("@ref {}", func_name))?;
66+
f.write(&format!("@ref {}_{}", lib.c_ffi_prefix, func_name))?;
6767
}
6868
DocReference::ClassConstructor(class_name) => {
6969
let handle = lib.find_class(class_name).unwrap();
7070
f.write(&format!(
71-
"@ref {}",
71+
"@ref {}_{}",
72+
lib.c_ffi_prefix,
7273
handle.constructor.as_ref().unwrap().name
7374
))?;
7475
}
7576
DocReference::ClassDestructor(class_name) => {
7677
let handle = lib.find_class(class_name).unwrap();
7778
f.write(&format!(
78-
"@ref {}",
79+
"@ref {}_{}",
80+
lib.c_ffi_prefix,
7981
handle.destructor.as_ref().unwrap().name
8082
))?;
8183
}
8284
DocReference::Struct(struct_name) => {
8385
let struct_name = lib.find_struct(struct_name).unwrap().declaration();
84-
f.write(&format!("@ref {}", struct_name.to_c_type()))?;
86+
f.write(&format!(
87+
"@ref {}",
88+
struct_name.to_c_type(&lib.c_ffi_prefix)
89+
))?;
8590
}
8691
DocReference::StructMethod(struct_name, method_name) => {
8792
let func_name = &lib
@@ -90,37 +95,38 @@ fn reference_print(
9095
.find_method(method_name)
9196
.unwrap()
9297
.name;
93-
f.write(&format!("@ref {}", func_name))?;
98+
f.write(&format!("@ref {}_{}", lib.c_ffi_prefix, func_name))?;
9499
}
95100
DocReference::StructElement(struct_name, element_name) => {
96101
let handle = lib.find_struct(struct_name).unwrap();
97102
f.write(&format!(
98103
"@ref {}.{}",
99-
handle.definition().to_c_type(),
104+
handle.definition().to_c_type(&lib.c_ffi_prefix),
100105
element_name.to_snake_case()
101106
))?;
102107
}
103108
DocReference::Enum(enum_name) => {
104109
let enum_name = lib.find_enum(enum_name).unwrap();
105-
f.write(&format!("@ref {}", enum_name.to_c_type()))?;
110+
f.write(&format!("@ref {}", enum_name.to_c_type(&lib.c_ffi_prefix)))?;
106111
}
107112
DocReference::EnumVariant(enum_name, variant_name) => {
108113
let handle = lib.find_enum(enum_name).unwrap();
109114
f.write(&format!(
110-
"@ref {}_{}",
111-
handle.name.to_camel_case(),
112-
variant_name.to_camel_case()
115+
"@ref {}_{}_{}",
116+
lib.c_ffi_prefix.to_shouty_snake_case(),
117+
handle.name.to_shouty_snake_case(),
118+
variant_name.to_shouty_snake_case()
113119
))?;
114120
}
115121
DocReference::Interface(interface_name) => {
116122
let handle = lib.find_interface(interface_name).unwrap();
117-
f.write(&format!("@ref {}", handle.to_c_type()))?;
123+
f.write(&format!("@ref {}", handle.to_c_type(&lib.c_ffi_prefix)))?;
118124
}
119125
DocReference::InterfaceMethod(interface_name, callback_name) => {
120126
let handle = &lib.find_interface(interface_name).unwrap();
121127
f.write(&format!(
122128
"@ref {}.{}",
123-
handle.to_c_type(),
129+
handle.to_c_type(&lib.c_ffi_prefix),
124130
callback_name.to_snake_case()
125131
))?;
126132
}

0 commit comments

Comments
 (0)