2024-02-16 20:37:47 -06:00
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
|
|
|
|
|
namespace Microsoft.Iris.Asm.Models;
|
2024-01-31 09:21:30 -06:00
|
|
|
|
2024-02-10 23:03:57 -06:00
|
|
|
public record NamespaceImport : ImportDirective
|
2024-01-31 09:21:30 -06:00
|
|
|
{
|
2024-02-04 22:23:10 -06:00
|
|
|
public NamespaceImport(string uri, string name) : base("ns")
|
|
|
|
|
{
|
|
|
|
|
Uri = uri;
|
|
|
|
|
Name = name;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public string Uri { get; init; }
|
|
|
|
|
public string Name { get; init; }
|
|
|
|
|
|
|
|
|
|
public override string ToString() => $"{base.ToString()} {Uri} as {Name}";
|
2024-01-31 09:21:30 -06:00
|
|
|
}
|
2024-02-08 10:50:57 -06:00
|
|
|
|
2024-02-10 23:03:57 -06:00
|
|
|
public record TypeImport : ImportDirective
|
2024-02-08 10:50:57 -06:00
|
|
|
{
|
2024-02-11 20:38:19 -06:00
|
|
|
public TypeImport(QualifiedTypeName qualifiedName) : base("type")
|
2024-02-08 10:50:57 -06:00
|
|
|
{
|
2024-02-11 20:38:19 -06:00
|
|
|
QualifiedName = qualifiedName;
|
2024-02-08 10:50:57 -06:00
|
|
|
}
|
|
|
|
|
|
2024-02-11 20:38:19 -06:00
|
|
|
public QualifiedTypeName QualifiedName { get; init; }
|
2024-02-08 10:50:57 -06:00
|
|
|
|
2024-02-11 20:38:19 -06:00
|
|
|
public override string ToString() => $"{base.ToString()} {QualifiedName}";
|
2024-02-08 10:50:57 -06:00
|
|
|
}
|
2024-02-16 20:37:47 -06:00
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Imports many members that can be specified by solely their name.
|
|
|
|
|
/// </summary>
|
|
|
|
|
public record NamedMemberImport : ImportDirective
|
|
|
|
|
{
|
|
|
|
|
public NamedMemberImport(QualifiedTypeName qualifiedName, IEnumerable<string> memberNames) : base("mbrs")
|
|
|
|
|
{
|
|
|
|
|
QualifiedName = qualifiedName;
|
|
|
|
|
MemberNames = memberNames.ToList();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public QualifiedTypeName QualifiedName { get; init; }
|
|
|
|
|
|
|
|
|
|
public List<string> MemberNames { get; init; }
|
|
|
|
|
|
|
|
|
|
public override string ToString() => $"{base.ToString()} {QualifiedName}{{{string.Join(", ", MemberNames)}}}";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public record ConstructorImport : ImportDirective
|
|
|
|
|
{
|
|
|
|
|
public ConstructorImport(QualifiedTypeName qualifiedName, IEnumerable<QualifiedTypeName> parameterTypes) : base("ctor")
|
|
|
|
|
{
|
|
|
|
|
QualifiedName = qualifiedName;
|
|
|
|
|
ParameterTypes = parameterTypes.ToList();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public QualifiedTypeName QualifiedName { get; init; }
|
|
|
|
|
|
|
|
|
|
public IEnumerable<QualifiedTypeName> ParameterTypes { get; init; }
|
|
|
|
|
|
|
|
|
|
public override string ToString() => $"{base.ToString()} {QualifiedName}.({string.Join(", ", ParameterTypes)})";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public record MethodImport : ImportDirective
|
|
|
|
|
{
|
|
|
|
|
public MethodImport(QualifiedTypeName qualifiedName, string methodName, IEnumerable<QualifiedTypeName> parameterTypes) : base("mthd")
|
|
|
|
|
{
|
|
|
|
|
QualifiedName = qualifiedName;
|
|
|
|
|
MethodName = methodName;
|
|
|
|
|
ParameterTypes = parameterTypes.ToList();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public QualifiedTypeName QualifiedName { get; init; }
|
|
|
|
|
|
|
|
|
|
public string MethodName { get; init; }
|
|
|
|
|
|
|
|
|
|
public IEnumerable<QualifiedTypeName> ParameterTypes { get; init; }
|
|
|
|
|
|
|
|
|
|
public override string ToString() => $"{base.ToString()} {QualifiedName}.{MethodName}({string.Join(", ", ParameterTypes)})";
|
|
|
|
|
}
|