Browse Source

Extract C# using generation into its own method.

pull/818/head
Joao Matos 9 years ago
parent
commit
be8d26b248
  1. 43
      src/Generator/Generators/CSharp/CSharpSources.cs

43
src/Generator/Generators/CSharp/CSharpSources.cs

@ -139,20 +139,41 @@ namespace CppSharp.Generators.CSharp
#endregion #endregion
public Module Module => TranslationUnits.Count == 0 ?
Context.Options.SystemModule : TranslationUnit.Module;
public override void Process() public override void Process()
{ {
GenerateFilePreamble(); GenerateFilePreamble();
var module = TranslationUnits.Count == 0 ? GenerateUsings();
Context.Options.SystemModule : TranslationUnit.Module;
if (!string.IsNullOrEmpty(Module.OutputNamespace))
{
PushBlock(CSharpBlockKind.Namespace);
WriteLine("namespace {0}", Module.OutputNamespace);
WriteStartBraceIndent();
}
foreach (var unit in TranslationUnits)
unit.Visit(this);
if (!string.IsNullOrEmpty(Module.OutputNamespace))
{
WriteCloseBraceIndent();
PopBlock(NewLineKind.BeforeNextBlock);
}
}
public void GenerateUsings()
{
PushBlock(CSharpBlockKind.Usings); PushBlock(CSharpBlockKind.Usings);
WriteLine("using System;"); WriteLine("using System;");
WriteLine("using System.Runtime.InteropServices;"); WriteLine("using System.Runtime.InteropServices;");
WriteLine("using System.Security;"); WriteLine("using System.Security;");
var internalsVisibleTo = (from m in Options.Modules var internalsVisibleTo = (from m in Options.Modules
where m.Dependencies.Contains(module) where m.Dependencies.Contains(Module)
select m.LibraryName).ToList(); select m.LibraryName).ToList();
if (internalsVisibleTo.Any()) if (internalsVisibleTo.Any())
WriteLine("using System.Runtime.CompilerServices;"); WriteLine("using System.Runtime.CompilerServices;");
@ -166,22 +187,6 @@ namespace CppSharp.Generators.CSharp
if (internalsVisibleTo.Any()) if (internalsVisibleTo.Any())
NewLine(); NewLine();
if (!string.IsNullOrEmpty(module.OutputNamespace))
{
PushBlock(CSharpBlockKind.Namespace);
WriteLine("namespace {0}", module.OutputNamespace);
WriteStartBraceIndent();
}
foreach (var unit in TranslationUnits)
unit.Visit(this);
if (!string.IsNullOrEmpty(module.OutputNamespace))
{
WriteCloseBraceIndent();
PopBlock(NewLineKind.BeforeNextBlock);
}
} }
public override bool VisitNamespace(Namespace @namespace) public override bool VisitNamespace(Namespace @namespace)

Loading…
Cancel
Save