static void DumpGenericInfo(TextWriter writer, SwiftNominalTypeDescriptor desc)
 {
     if (!desc.IsGeneric())
     {
         return;
     }
     writer.WriteLine($"Generic parameters: {desc.GetGenericParamCount ()} ({desc.GetPrimaryGenericParamCount ()} primary)");
 }
        internal static unsafe SwiftMetatype ExistentialContainerMetadata(SwiftNominalTypeDescriptor descriptor)
        {
            var arr = stackalloc IntPtr [1];

            arr [0] = descriptor.Handle;
            var result = swift_getExistentialTypeMetadata(1, IntPtr.Zero, 1, new IntPtr(arr));

            return(new SwiftMetatype(result));
        }
 static string NameFromClassObject(SwiftClassObject classObj)
 {
     if (classObj.IsNominalTypeDescriptorValid)
     {
         SwiftNominalTypeDescriptor nom = classObj.NominalTypeDescriptor;
         return(nom.GetMangledName());
     }
     else
     {
         return(null);
     }
 }
        static void DumpNominalTypeDescriptor(TextWriter writer, SwiftNominalTypeDescriptor desc)
        {
            // In this code, desc.GetKind() will always be for a class, but you never know.
            switch (desc.GetKind())
            {
            case NominalTypeDescriptorKind.Class:
                DumpClassTypeDescriptor(writer, desc);
                break;

            case NominalTypeDescriptorKind.Enum:
                DumpEnumTypeDescriptor(writer, desc);
                break;

            case NominalTypeDescriptorKind.Struct:
                DumpStructTypeDescriptor(writer, desc);
                break;

            case NominalTypeDescriptorKind.None:
                writer.WriteLine("Unknown descriptor type.");
                break;
            }
        }
 public static SwiftProtocolWitnessTable ConformsToSwiftProtocol(SwiftMetatype metadata, SwiftNominalTypeDescriptor protocolDescriptor)
 {
     return(new SwiftProtocolWitnessTable(swift_conformsToProtocol(metadata, protocolDescriptor)));
 }
 static extern IntPtr swift_conformsToProtocol(SwiftMetatype metadata, SwiftNominalTypeDescriptor protocolDescriptor);
 static void DumpStructTypeDescriptor(TextWriter writer, SwiftNominalTypeDescriptor desc)
 {
     DumpLabeledList(writer, "Fields", desc.GetFieldNames());
     DumpGenericInfo(writer, desc);
 }
 static void DumpEnumTypeDescriptor(TextWriter writer, SwiftNominalTypeDescriptor desc)
 {
     DumpLabeledList(writer, $"Cases ({desc.GetPayloadCaseCount ()} with payloads, {desc.GetEmptyCaseCount ()} empty)", desc.GetCaseNames());
     DumpGenericInfo(writer, desc);
 }