-
-
Notifications
You must be signed in to change notification settings - Fork 8
/
CSharpLibraryGenerator.ICSharpOutputGenerator.cs
50 lines (41 loc) · 2.2 KB
/
CSharpLibraryGenerator.ICSharpOutputGenerator.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
using Biohazrd.CSharp.Infrastructure;
using Biohazrd.Expressions;
using System;
namespace Biohazrd.CSharp
{
partial class CSharpLibraryGenerator : ICSharpOutputGenerator, ICSharpOutputGeneratorInternal
{
CSharpGenerationOptions ICSharpOutputGenerator.Options => Options;
string ICSharpOutputGenerator.GetTypeAsString(VisitorContext context, TranslatedDeclaration declaration, TypeReference type)
=> GetTypeAsString(context, declaration, type);
string ICSharpOutputGenerator.GetConstantAsString(VisitorContext context, TranslatedDeclaration declaration, ConstantValue constant, TypeReference targetType)
=> GetConstantAsString(context, declaration, constant, targetType);
void ICSharpOutputGenerator.AddUsing(string @namespace)
=> Writer.Using(@namespace);
void ICSharpOutputGenerator.Visit(VisitorContext context, TranslatedDeclaration declaration)
=> Visit(context, declaration);
void ICSharpOutputGenerator.AddDiagnostic(TranslationDiagnostic diagnostic)
=> Diagnostics.Add(diagnostic);
void ICSharpOutputGeneratorInternal.Fatal(VisitorContext context, TranslatedDeclaration declaration, string? reason)
=> Fatal(context, declaration, reason);
void ICSharpOutputGeneratorInternal.Fatal(VisitorContext context, TranslatedDeclaration declaration, string? reason, string? extraDescription)
=> Fatal(context, declaration, reason, extraDescription);
// These are used for a dirty hack to work around lack of proper support for late-generated infrastructure types
private bool __NeedsNativeBoolean;
private bool __NeedsNativeChar;
void ICSharpOutputGeneratorInternal.__IndicateInfrastructureTypeDependency(NonBlittableTypeKind kind)
{
switch (kind)
{
case NonBlittableTypeKind.NativeBoolean:
__NeedsNativeBoolean = true;
break;
case NonBlittableTypeKind.NativeChar:
__NeedsNativeChar = true;
break;
default:
throw new NotSupportedException();
}
}
}
}