-
Notifications
You must be signed in to change notification settings - Fork 396
Expand file tree
/
Copy pathICodeGenerator.cs
More file actions
39 lines (33 loc) · 1.26 KB
/
ICodeGenerator.cs
File metadata and controls
39 lines (33 loc) · 1.26 KB
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
using System;
using System.Collections.Generic;
using System.Diagnostics.Contracts;
using ReClassNET.Logger;
using ReClassNET.Nodes;
using ReClassNET.Project;
namespace ReClassNET.CodeGenerator
{
[ContractClass(typeof(CodeGeneratorContract))]
public interface ICodeGenerator
{
/// <summary>The language this generator produces.</summary>
Language Language { get; }
/// <summary>Generates code for the classes.</summary>
/// <param name="classes">The classes to generate code from.</param>
/// <param name="logger">The logger used to output messages.</param>
/// <returns>The code for the classes.</returns>
string GenerateCode(IReadOnlyList<ClassNode> classes, IReadOnlyList<EnumDescription> enums, ILogger logger);
}
[ContractClassFor(typeof(ICodeGenerator))]
internal abstract class CodeGeneratorContract : ICodeGenerator
{
public Language Language => throw new NotImplementedException();
public string GenerateCode(IReadOnlyList<ClassNode> classes, IReadOnlyList<EnumDescription> enums, ILogger logger)
{
Contract.Requires(classes != null);
Contract.Requires(Contract.ForAll(classes, c => c != null));
Contract.Requires(logger != null);
Contract.Ensures(Contract.Result<string>() != null);
throw new NotImplementedException();
}
}
}