Skip to content

Commit 0f22f0d

Browse files
committed
Use IReadOnlyList.
Moved methods to MainForm.
1 parent aae0b9d commit 0f22f0d

File tree

7 files changed

+34
-37
lines changed

7 files changed

+34
-37
lines changed

ReClass.NET/CodeGenerator/CppCodeGenerator.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -108,9 +108,9 @@ public CppCodeGenerator(CppTypeMapping typeMapping)
108108
};
109109
}
110110

111-
public string GenerateCode(IEnumerable<ClassNode> classes, ILogger logger)
111+
public string GenerateCode(IReadOnlyList<ClassNode> classes, ILogger logger)
112112
{
113-
var classNodes = classes as IList<ClassNode> ?? classes.ToList();
113+
var classNodes = classes;
114114

115115
var sb = new StringBuilder();
116116
sb.AppendLine($"// Created with {Constants.ApplicationName} {Constants.ApplicationVersion} by {Constants.Author}");

ReClass.NET/CodeGenerator/ICodeGenerator.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,15 @@ public interface ICodeGenerator
1616
/// <param name="classes">The classes to generate code from.</param>
1717
/// <param name="logger">The logger used to output messages.</param>
1818
/// <returns>The code for the classes.</returns>
19-
string GenerateCode(IEnumerable<ClassNode> classes, ILogger logger);
19+
string GenerateCode(IReadOnlyList<ClassNode> classes, ILogger logger);
2020
}
2121

2222
[ContractClassFor(typeof(ICodeGenerator))]
2323
internal abstract class CodeGeneratorContract : ICodeGenerator
2424
{
2525
public Language Language => throw new NotImplementedException();
2626

27-
public string GenerateCode(IEnumerable<ClassNode> classes, ILogger logger)
27+
public string GenerateCode(IReadOnlyList<ClassNode> classes, ILogger logger)
2828
{
2929
Contract.Requires(classes != null);
3030
Contract.Requires(Contract.ForAll(classes, c => c != null));

ReClass.NET/Forms/CodeForm.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ namespace ReClassNET.Forms
1919
{
2020
public partial class CodeForm : IconForm
2121
{
22-
public CodeForm(ICodeGenerator generator, IEnumerable<ClassNode> classes, ILogger logger)
22+
public CodeForm(ICodeGenerator generator, IReadOnlyList<ClassNode> classes, ILogger logger)
2323
{
2424
Contract.Requires(generator != null);
2525
Contract.Requires(classes != null);

ReClass.NET/Forms/MainForm.Functions.cs

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,30 @@
2020

2121
namespace ReClassNET.Forms
2222
{
23-
public partial class MainForm : IconForm
23+
public partial class MainForm
2424
{
25+
public void ShowDefaultCodeGeneratorForm(IReadOnlyList<ClassNode> classes)
26+
{
27+
Contract.Requires(classes != null);
28+
29+
ShowCodeGeneratorForm(classes, new CppCodeGenerator(currentProject.TypeMapping));
30+
}
31+
32+
public void ShowCodeGeneratorForm(ICodeGenerator generator)
33+
{
34+
Contract.Requires(generator != null);
35+
36+
ShowCodeGeneratorForm(currentProject.Classes, generator);
37+
}
38+
39+
public void ShowCodeGeneratorForm(IReadOnlyList<ClassNode> classes, ICodeGenerator generator)
40+
{
41+
Contract.Requires(classes != null);
42+
Contract.Requires(generator != null);
43+
44+
new CodeForm(generator, classes, Program.Logger).Show();
45+
}
46+
2547
public void AttachToProcess(string processName)
2648
{
2749
var info = Program.CoreFunctions.EnumerateProcesses().FirstOrDefault(p => string.Equals(p.Name, processName, StringComparison.OrdinalIgnoreCase));
@@ -93,15 +115,6 @@ void UpdateClassNodes(BaseNode node)
93115
memoryViewControl.ClassNode = currentProject.Classes.FirstOrDefault();
94116
}
95117

96-
/// <summary>Shows the code form with the given <paramref name="generator"/>.</summary>
97-
/// <param name="generator">The generator.</param>
98-
private void ShowCodeForm(ICodeGenerator generator)
99-
{
100-
Contract.Requires(generator != null);
101-
102-
LinkedWindowFeatures.ShowCodeGeneratorForm(currentProject.Classes, generator);
103-
}
104-
105118
/// <summary>Opens the <see cref="InputBytesForm"/> and calls <paramref name="callback"/> with the result.</summary>
106119
/// <param name="title">The title of the input form.</param>
107120
/// <param name="callback">The function to call afterwards.</param>

ReClass.NET/Forms/MainForm.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -383,12 +383,12 @@ private void cleanUnusedClassesToolStripMenuItem_Click(object sender, EventArgs
383383

384384
private void generateCppCodeToolStripMenuItem_Click(object sender, EventArgs e)
385385
{
386-
ShowCodeForm(new CppCodeGenerator(CurrentProject.TypeMapping));
386+
ShowCodeGeneratorForm(new CppCodeGenerator(currentProject.TypeMapping));
387387
}
388388

389389
private void generateCSharpCodeToolStripMenuItem_Click(object sender, EventArgs e)
390390
{
391-
ShowCodeForm(new CSharpCodeGenerator());
391+
ShowCodeGeneratorForm(new CSharpCodeGenerator());
392392
}
393393

394394
private void aboutToolStripMenuItem_Click(object sender, EventArgs e)
@@ -679,7 +679,7 @@ private void showCodeOfClassToolStripMenuItem_Click(object sender, EventArgs e)
679679
{
680680
if (memoryViewControl.GetSelectedNodes().FirstOrDefault()?.Node is ClassNode node)
681681
{
682-
LinkedWindowFeatures.ShowCodeGeneratorForm(node.Yield(), CurrentProject.TypeMapping);
682+
ShowDefaultCodeGeneratorForm(new[] { node });
683683
}
684684
}
685685

@@ -895,7 +895,7 @@ private void showCodeOfClassToolStripMenuItem2_Click(object sender, EventArgs e)
895895
return;
896896
}
897897

898-
LinkedWindowFeatures.ShowCodeGeneratorForm(classNode.Yield(), CurrentProject.TypeMapping);
898+
ShowDefaultCodeGeneratorForm(new[] { classNode });
899899
}
900900

901901
private void enableHierarchyViewToolStripMenuItem_Click(object sender, EventArgs e)

ReClass.NET/Project/ReClassNetProject.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,9 @@ public class ReClassNetProject : IDisposable
2020
private readonly List<EnumDescription> enums = new List<EnumDescription>();
2121
private readonly List<ClassNode> classes = new List<ClassNode>();
2222

23-
public IEnumerable<EnumDescription> Enums => enums;
23+
public IReadOnlyList<EnumDescription> Enums => enums;
2424

25-
public IEnumerable<ClassNode> Classes => classes;
25+
public IReadOnlyList<ClassNode> Classes => classes;
2626

2727
public string Path { get; set; }
2828

ReClass.NET/UI/LinkedWindowFeatures.cs

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -132,21 +132,5 @@ public static void StartMemoryScan(IScanComparer comparer)
132132

133133
sf.ExcuteScan(settings, comparer);
134134
}
135-
136-
public static void ShowCodeGeneratorForm(IEnumerable<ClassNode> classes, CppTypeMapping typeMapping)
137-
{
138-
Contract.Requires(classes != null);
139-
Contract.Requires(typeMapping != null);
140-
141-
ShowCodeGeneratorForm(classes, new CppCodeGenerator(typeMapping));
142-
}
143-
144-
public static void ShowCodeGeneratorForm(IEnumerable<ClassNode> classes, ICodeGenerator generator)
145-
{
146-
Contract.Requires(classes != null);
147-
Contract.Requires(generator != null);
148-
149-
new CodeForm(generator, classes, Program.Logger).Show();
150-
}
151135
}
152136
}

0 commit comments

Comments
 (0)