Skip to content

Commit 7fee45b

Browse files
committed
Removed BaseReferenceNode.
1 parent 1cab05e commit 7fee45b

5 files changed

Lines changed: 19 additions & 53 deletions

File tree

ReClass.NET/CodeGenerator/CppCodeGenerator.cs

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using System;
1+
using System;
22
using System.Collections.Generic;
33
using System.Diagnostics.Contracts;
44
using System.Linq;
@@ -124,7 +124,9 @@ private static IEnumerable<ClassNode> OrderByInheritance(IEnumerable<ClassNode>
124124

125125
var alreadySeen = new HashSet<ClassNode>();
126126

127-
return classes.SelectMany(c => YieldReversedHierarchy(c, alreadySeen)).Distinct();
127+
return classes
128+
.SelectMany(c => YieldReversedHierarchy(c, alreadySeen))
129+
.Distinct();
128130
}
129131

130132
private static IEnumerable<ClassNode> YieldReversedHierarchy(ClassNode node, ISet<ClassNode> alreadySeen)
@@ -136,18 +138,17 @@ private static IEnumerable<ClassNode> YieldReversedHierarchy(ClassNode node, ISe
136138

137139
if (!alreadySeen.Add(node))
138140
{
139-
yield break;
141+
return Enumerable.Empty<ClassNode>();
140142
}
141143

142-
foreach (var referenceNode in node.Nodes.OfType<BaseReferenceNode>())
143-
{
144-
foreach (var referencedNode in YieldReversedHierarchy(referenceNode.InnerNode, alreadySeen))
145-
{
146-
yield return referencedNode;
147-
}
148-
}
144+
var classNodes = node.Nodes
145+
.OfType<BaseWrapperNode>()
146+
.Select(w => w.ResolveMostInnerNode() as ClassNode)
147+
.Where(n => n != null);
149148

150-
yield return node;
149+
return classNodes
150+
.SelectMany(c => YieldReversedHierarchy(c, alreadySeen))
151+
.Append(node);
151152
}
152153

153154
private IEnumerable<MemberDefinition> YieldMemberDefinitions(IEnumerable<BaseNode> members, ILogger logger)

ReClass.NET/DataExchange/ReClass/ReClassNetFile.Write.cs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -165,18 +165,18 @@ public static void WriteNodes(Stream output, IEnumerable<BaseNode> nodes, ILogge
165165

166166
using (var project = new ReClassNetProject())
167167
{
168-
void RecursiveAddReferences(BaseReferenceNode referenceNode)
168+
void RecursiveAddClasses(BaseWrapperNode wrapperNode)
169169
{
170-
if (project.ContainsClass(referenceNode.InnerNode.Uuid))
170+
if (!(wrapperNode.ResolveMostInnerNode() is ClassNode classNode) || project.ContainsClass(classNode.Uuid))
171171
{
172172
return;
173173
}
174174

175-
project.AddClass(referenceNode.InnerNode);
175+
project.AddClass(classNode);
176176

177-
foreach (var reference in referenceNode.InnerNode.Nodes.OfType<BaseReferenceNode>())
177+
foreach (var wrapperNodeChild in classNode.Nodes.OfType<BaseWrapperNode>())
178178
{
179-
RecursiveAddReferences(reference);
179+
RecursiveAddClasses(wrapperNodeChild);
180180
}
181181
}
182182

@@ -196,9 +196,9 @@ void RecursiveAddReferences(BaseReferenceNode referenceNode)
196196
continue;
197197
}
198198

199-
if (node is BaseReferenceNode referenceNode)
199+
if (node is BaseWrapperNode wrapperNode)
200200
{
201-
RecursiveAddReferences(referenceNode);
201+
RecursiveAddClasses(wrapperNode);
202202
}
203203

204204
serialisationClass.AddNode(node);

ReClass.NET/Nodes/BaseReferenceNode.cs

Lines changed: 0 additions & 33 deletions
This file was deleted.

ReClass.NET/ReClass.NET.csproj

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -407,7 +407,6 @@
407407
<Compile Include="Nodes\BaseHexCommentNode.cs" />
408408
<Compile Include="Nodes\BaseHexNode.cs" />
409409
<Compile Include="Nodes\BaseNode.cs" />
410-
<Compile Include="Nodes\BaseReferenceNode.cs" />
411410
<Compile Include="Nodes\BaseTextNode.cs" />
412411
<Compile Include="Nodes\BaseTextPtrNode.cs" />
413412
<Compile Include="Nodes\BaseMatrixNode.cs" />

TODO.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
1 BaseWrapperNode CodeGenerator
2-
2 Remove BaseReferenceNode
32
3 NodeTypesBuilder Plugin support
43
5 Custom data exchange needs access to the build in node handling for wrapped nodes
54
6 Should BaseContainerNode be rebuild?

0 commit comments

Comments
 (0)