(
module_prefix: &'a str,
module: &'a ModuleDef,
ty: &'a AlgebraicTypeUse,
module_name: &'a str,
)
| 6705 | } |
| 6706 | |
| 6707 | fn cpp_ty_fmt_impl<'a>( |
| 6708 | module_prefix: &'a str, |
| 6709 | module: &'a ModuleDef, |
| 6710 | ty: &'a AlgebraicTypeUse, |
| 6711 | module_name: &'a str, |
| 6712 | ) -> impl fmt::Display + 'a { |
| 6713 | fmt_fn(move |f| match ty { |
| 6714 | // --------- primitives etc --------- |
| 6715 | AlgebraicTypeUse::Primitive(p) => f.write_str(match p { |
| 6716 | PrimitiveType::Bool => "bool", |
| 6717 | PrimitiveType::I8 => "int8", |
| 6718 | PrimitiveType::U8 => "uint8", |
| 6719 | PrimitiveType::I16 => "int16", |
| 6720 | PrimitiveType::U16 => "uint16", |
| 6721 | PrimitiveType::I32 => "int32", |
| 6722 | PrimitiveType::U32 => "uint32", |
| 6723 | PrimitiveType::I64 => "int64", |
| 6724 | PrimitiveType::U64 => "uint64", |
| 6725 | PrimitiveType::F32 => "float", |
| 6726 | PrimitiveType::F64 => "double", |
| 6727 | PrimitiveType::I128 => "FSpacetimeDBInt128", |
| 6728 | PrimitiveType::U128 => "FSpacetimeDBUInt128", |
| 6729 | PrimitiveType::I256 => "FSpacetimeDBInt256", |
| 6730 | PrimitiveType::U256 => "FSpacetimeDBUInt256", |
| 6731 | }), |
| 6732 | |
| 6733 | AlgebraicTypeUse::Array(elem) if matches!(elem.as_ref(), AlgebraicTypeUse::Primitive(PrimitiveType::U8)) => { |
| 6734 | f.write_str("TArray<uint8>") |
| 6735 | } |
| 6736 | |
| 6737 | AlgebraicTypeUse::Array(elem) => { |
| 6738 | let elem_type = cpp_ty_fmt_impl(module_prefix, module, elem, module_name).to_string(); |
| 6739 | write!(f, "TArray<{elem_type}>") |
| 6740 | } |
| 6741 | |
| 6742 | AlgebraicTypeUse::String => f.write_str("FString"), |
| 6743 | AlgebraicTypeUse::Identity => f.write_str("FSpacetimeDBIdentity"), |
| 6744 | AlgebraicTypeUse::ConnectionId => f.write_str("FSpacetimeDBConnectionId"), |
| 6745 | AlgebraicTypeUse::Timestamp => f.write_str("FSpacetimeDBTimestamp"), |
| 6746 | AlgebraicTypeUse::TimeDuration => f.write_str("FSpacetimeDBTimeDuration"), |
| 6747 | AlgebraicTypeUse::Uuid => f.write_str("FSpacetimeDBUuid"), |
| 6748 | AlgebraicTypeUse::ScheduleAt => f.write_str("FSpacetimeDBScheduleAt"), |
| 6749 | AlgebraicTypeUse::Unit => f.write_str("FSpacetimeDBUnit"), |
| 6750 | |
| 6751 | // --------- references to user-defined types --------- |
| 6752 | AlgebraicTypeUse::Ref(r) => { |
| 6753 | let scoped = type_ref_name(module_prefix, module, *r); // PascalCase |
| 6754 | match &module.typespace_for_generate()[*r] { |
| 6755 | AlgebraicTypeDef::PlainEnum(_) => write!(f, "E{scoped}Type"), // enum → EFooType |
| 6756 | AlgebraicTypeDef::Product(_) => write!(f, "F{scoped}Type"), // struct/record → FFooType |
| 6757 | AlgebraicTypeDef::Sum(_) => write!(f, "F{scoped}Type"), // sum type → FFooType (UStruct) |
| 6758 | } |
| 6759 | } |
| 6760 | |
| 6761 | // Options use the generated optional types |
| 6762 | AlgebraicTypeUse::Option(inner) => { |
| 6763 | let optional_name = get_optional_type_name(module_prefix, module, inner); |
| 6764 | if module_name.is_empty() { |
no test coverage detected
searching dependent graphs…