MCPcopy Create free account
hub / github.com/clockworklabs/SpacetimeDB / cpp_ty_fmt_impl

Function cpp_ty_fmt_impl

crates/codegen/src/unrealcpp.rs:6707–6783  ·  view source on GitHub ↗
(
    module_prefix: &'a str,
    module: &'a ModuleDef,
    ty: &'a AlgebraicTypeUse,
    module_name: &'a str,
)

Source from the content-addressed store, hash-verified

6705}
6706
6707fn 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() {

Callers 1

cpp_ty_fmt_with_moduleFunction · 0.85

Calls 9

get_optional_type_nameFunction · 0.85
get_type_name_for_resultFunction · 0.85
to_caseMethod · 0.80
fmt_fnFunction · 0.70
type_ref_nameFunction · 0.70
write_strMethod · 0.45
to_stringMethod · 0.45
is_emptyMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…