Browse Source

Extract the declaration sorting into its own pass.

pull/1/head
triton 13 years ago
parent
commit
29851ceaba
  1. 14
      src/Generator/Driver.cs
  2. 36
      src/Generator/Passes/SortDeclarationsPass.cs

14
src/Generator/Driver.cs

@ -41,14 +41,11 @@ namespace Cxxi @@ -41,14 +41,11 @@ namespace Cxxi
public void ProcessCode()
{
// Sort the declarations to be in original order.
foreach (var unit in library.TranslationUnits)
SortDeclarations(unit);
if (transform != null)
transform.Preprocess(new LibraryHelpers(library));
var passes = new PassBuilder(library);
passes.SortDeclarations();
passes.ResolveIncompleteDecls(typeDatabase);
passes.CleanInvalidDeclNames();
passes.CheckFlagEnums();
@ -63,15 +60,6 @@ namespace Cxxi @@ -63,15 +60,6 @@ namespace Cxxi
transform.Postprocess(new LibraryHelpers(library));
}
private static void SortDeclarations(Namespace @namespace)
{
@namespace.Classes.Sort((c, c1) =>
(int) (c.DefinitionOrder - c1.DefinitionOrder));
foreach (var childNamespace in @namespace.Namespaces)
SortDeclarations(childNamespace);
}
public void GenerateCode()
{
if (library.TranslationUnits.Count <= 0)

36
src/Generator/Passes/SortDeclarationsPass.cs

@ -0,0 +1,36 @@ @@ -0,0 +1,36 @@
using Cxxi.Types;
namespace Cxxi.Passes
{
class SortDeclarationsPass : TranslationUnitPass
{
public SortDeclarationsPass()
{
}
private static void SortDeclarations(Namespace @namespace)
{
@namespace.Classes.Sort((c, c1) =>
(int)(c.DefinitionOrder - c1.DefinitionOrder));
foreach (var childNamespace in @namespace.Namespaces)
SortDeclarations(childNamespace);
}
public override bool ProcessUnit(TranslationUnit unit)
{
SortDeclarations(unit);
return true;
}
}
public static class SortDeclarationsExtensions
{
public static void SortDeclarations(this PassBuilder builder)
{
var pass = new SortDeclarationsPass();
builder.AddPass(pass);
}
}
}
Loading…
Cancel
Save