override fun render()

in smithy-swift-codegen/src/main/kotlin/software/amazon/smithy/swift/codegen/integration/serde/xml/UnionEncodeXMLGenerator.kt [25:58]


    override fun render() {
        val containerName = "container"
        writer.openBlock("public func encode(to encoder: \$N) throws {", "}", SwiftTypes.Encoder) {
            writer.write("var $containerName = encoder.container(keyedBy: \$N.self)", ClientRuntimeTypes.Serde.Key)
            writer.openBlock("switch self {", "}") {
                val membersSortedByName: List<MemberShape> = members.sortedBy { it.memberName }
                membersSortedByName.forEach { member ->
                    val memberTarget = ctx.model.expectShape(member.target)
                    val memberName = ctx.symbolProvider.toMemberName(member)
                    writer.write("case let .\$L(\$L):", memberName, memberName)
                    writer.indent()
                    when (memberTarget) {
                        is CollectionShape -> {
                            renderListMember(member, memberTarget, containerName)
                        }
                        is MapShape -> {
                            renderMapMember(member, memberTarget, containerName)
                        }
                        is TimestampShape -> {
                            renderTimestampMember(member, memberTarget, containerName)
                        }
                        else -> {
                            renderEncodeAssociatedType(member, memberTarget, containerName)
                        }
                    }
                    writer.dedent()
                }
                writer.write("case let .sdkUnknown(sdkUnknown):")
                writer.indent()
                writer.write("try container.encode(sdkUnknown, forKey: \$N(\"sdkUnknown\"))", ClientRuntimeTypes.Serde.Key)
                writer.dedent()
            }
        }
    }