Skip to content

Commit 079d4a4

Browse files
committed
Move World generator code to own file
Signed-off-by: James Sturtevant <[email protected]>
1 parent 9a11c78 commit 079d4a4

File tree

4 files changed

+1013
-1014
lines changed

4 files changed

+1013
-1014
lines changed

crates/csharp/src/function.rs

Lines changed: 31 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
use crate::csharp_ident::ToCSharpIdent;
22
use crate::interface::InterfaceGenerator;
3-
use crate::{CSharp, ResourceInfo};
3+
use crate::world_generator::CSharp;
44
use heck::ToUpperCamelCase;
55
use std::fmt::Write;
66
use std::mem;
77
use std::ops::Deref;
88
use wit_bindgen_core::abi::{Bindgen, Bitcast, Instruction};
99
use wit_bindgen_core::{uwrite, uwriteln, Direction, Ns};
1010
use wit_parser::abi::WasmType;
11-
use wit_parser::{FunctionKind, Handle, Resolve, SizeAlign, Type, TypeDefKind, TypeId};
11+
use wit_parser::{Docs, FunctionKind, Handle, Resolve, SizeAlign, Type, TypeDefKind, TypeId};
1212

1313
/// FunctionBindgen generates the C# code for calling functions defined in wit
1414
pub(crate) struct FunctionBindgen<'a, 'b> {
@@ -93,7 +93,7 @@ impl<'a, 'b> FunctionBindgen<'a, 'b> {
9393
let declarations = lowered
9494
.iter()
9595
.zip(lowered_types)
96-
.map(|(lowered, ty)| format!("{} {lowered};", crate::wasm_type(*ty)))
96+
.map(|(lowered, ty)| format!("{} {lowered};", crate::world_generator::wasm_type(*ty)))
9797
.collect::<Vec<_>>()
9898
.join("\n");
9999

@@ -433,7 +433,7 @@ impl Bindgen for FunctionBindgen<'_, '_> {
433433
let declarations = lowered
434434
.iter()
435435
.zip(lowered_types.iter())
436-
.map(|(lowered, ty)| format!("{} {lowered};", crate::wasm_type(*ty)))
436+
.map(|(lowered, ty)| format!("{} {lowered};", crate::world_generator::wasm_type(*ty)))
437437
.collect::<Vec<_>>()
438438
.join("\n");
439439

@@ -1104,7 +1104,7 @@ impl Bindgen for FunctionBindgen<'_, '_> {
11041104
self.import_return_pointer_area_size.max(size);
11051105
self.import_return_pointer_area_align =
11061106
self.import_return_pointer_area_align.max(align);
1107-
let (array_size, element_type) = crate::dotnet_aligned_array(
1107+
let (array_size, element_type) = crate::world_generator::dotnet_aligned_array(
11081108
self.import_return_pointer_area_size,
11091109
self.import_return_pointer_area_align,
11101110
);
@@ -1186,7 +1186,7 @@ impl Bindgen for FunctionBindgen<'_, '_> {
11861186
}
11871187

11881188
fn is_list_canonical(&self, _resolve: &Resolve, element: &Type) -> bool {
1189-
crate::is_primitive(element)
1189+
crate::world_generator::is_primitive(element)
11901190
}
11911191
}
11921192

@@ -1261,3 +1261,28 @@ struct BlockStorage {
12611261
base: String,
12621262
cleanup: Vec<Cleanup>,
12631263
}
1264+
1265+
#[derive(Clone)]
1266+
pub struct ResourceInfo {
1267+
pub(crate) module: String,
1268+
pub(crate) name: String,
1269+
pub(crate) docs: Docs,
1270+
pub(crate) direction: Direction,
1271+
}
1272+
1273+
impl ResourceInfo {
1274+
/// Returns the name of the exported implementation of this resource.
1275+
///
1276+
/// The result is only valid if the resource is actually being exported by the world.
1277+
fn export_impl_name(&self) -> String {
1278+
format!(
1279+
"{}Impl.{}",
1280+
CSharp::get_class_name_from_qualified_name(&self.module)
1281+
.1
1282+
.strip_prefix("I")
1283+
.unwrap()
1284+
.to_upper_camel_case(),
1285+
self.name.to_upper_camel_case()
1286+
)
1287+
}
1288+
}

crates/csharp/src/interface.rs

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
use crate::csharp_ident::ToCSharpIdent;
22
use crate::function::FunctionBindgen;
3-
use crate::{CSharp, ResourceInfo};
3+
use crate::function::ResourceInfo;
4+
use crate::world_generator::CSharp;
45
use heck::{ToShoutySnakeCase, ToUpperCamelCase};
56
use std::collections::{HashMap, HashSet};
67
use std::fmt::Write;
@@ -196,7 +197,7 @@ impl InterfaceGenerator<'_> {
196197

197198
let wasm_result_type = match &sig.results[..] {
198199
[] => "void",
199-
[result] => crate::wasm_type(*result),
200+
[result] => crate::world_generator::wasm_type(*result),
200201
_ => unreachable!(),
201202
};
202203

@@ -237,7 +238,7 @@ impl InterfaceGenerator<'_> {
237238
.iter()
238239
.enumerate()
239240
.map(|(i, param)| {
240-
let ty = crate::wasm_type(*param);
241+
let ty = crate::world_generator::wasm_type(*param);
241242
format!("{ty} p{i}")
242243
})
243244
.collect::<Vec<_>>()
@@ -407,7 +408,7 @@ impl InterfaceGenerator<'_> {
407408

408409
let wasm_result_type = match &sig.results[..] {
409410
[] => "void",
410-
[result] => crate::wasm_type(*result),
411+
[result] => crate::world_generator::wasm_type(*result),
411412
_ => unreachable!(),
412413
};
413414

@@ -416,7 +417,7 @@ impl InterfaceGenerator<'_> {
416417
.iter()
417418
.enumerate()
418419
.map(|(i, param)| {
419-
let ty = crate::wasm_type(*param);
420+
let ty = crate::world_generator::wasm_type(*param);
420421
format!("{ty} p{i}")
421422
})
422423
.collect::<Vec<_>>()
@@ -532,7 +533,7 @@ impl InterfaceGenerator<'_> {
532533
match &ty.kind {
533534
TypeDefKind::Type(ty) => self.type_name_with_qualifier(ty, qualifier),
534535
TypeDefKind::List(ty) => {
535-
if crate::is_primitive(ty) {
536+
if crate::world_generator::is_primitive(ty) {
536537
format!("{}[]", self.type_name(ty))
537538
} else {
538539
format!("List<{}>", self.type_name_with_qualifier(ty, qualifier))

0 commit comments

Comments
 (0)