Browse Source

Refactored multiple similar foreach loops to a simpler version.

pull/220/merge
marcos henrich 12 years ago committed by triton
parent
commit
afde77e968
  1. 30
      src/Generator/Generators/CLI/CLIHeadersTemplate.cs
  2. 9
      src/Generator/Generators/CLI/CLIMarshal.cs
  3. 18
      src/Generator/Generators/CLI/CLISourcesTemplate.cs

30
src/Generator/Generators/CLI/CLIHeadersTemplate.cs

@ -414,16 +414,12 @@ namespace CppSharp.Generators.CLI @@ -414,16 +414,12 @@ namespace CppSharp.Generators.CLI
{
// Handle the case of struct (value-type) inheritance by adding the base
// properties to the managed value subtypes.
foreach (var @base in @class.Bases)
if (@class.IsValueType)
{
if (!@base.IsClass)
continue;
Class baseClass = @base.Class;
if (!baseClass.IsValueType || baseClass.Ignore)
continue;
GenerateClassFields(baseClass);
foreach (var @base in @class.Bases.Where(b => b.IsClass && !b.Class.Ignore))
{
GenerateClassFields(@base.Class);
}
}
PushIndent();
@ -450,7 +446,7 @@ namespace CppSharp.Generators.CLI @@ -450,7 +446,7 @@ namespace CppSharp.Generators.CLI
field.Offset);
WriteLine("{0} {1};", field.Type, field.Name);
PopBlock(NewLineKind.Never);
PopBlock();
}
public void GenerateClassEvents(Class @class)
@ -593,16 +589,12 @@ namespace CppSharp.Generators.CLI @@ -593,16 +589,12 @@ namespace CppSharp.Generators.CLI
{
// Handle the case of struct (value-type) inheritance by adding the base
// properties to the managed value subtypes.
foreach (var @base in @class.Bases)
if (@class.IsValueType)
{
if (!@base.IsClass)
continue;
Class baseClass = @base.Class;
if (!baseClass.IsValueType || baseClass.Ignore)
continue;
GenerateClassProperties(baseClass);
foreach (var @base in @class.Bases.Where(b => b.IsClass && !b.Class.Ignore))
{
GenerateClassProperties(@base.Class);
}
}
PushIndent();

9
src/Generator/Generators/CLI/CLIMarshal.cs

@ -1,4 +1,5 @@ @@ -1,4 +1,5 @@
using System;
using System.Linq;
using System.Text;
using CppSharp.AST;
using CppSharp.AST.Extensions;
@ -604,13 +605,9 @@ namespace CppSharp.Generators.CLI @@ -604,13 +605,9 @@ namespace CppSharp.Generators.CLI
public void MarshalValueClassProperties(Class @class, string marshalVar)
{
foreach (var @base in @class.Bases)
foreach (var @base in @class.Bases.Where(b => b.IsClass && !b.Class.Ignore))
{
if (!@base.IsClass || @base.Class.Ignore)
continue;
var baseClass = @base.Class;
MarshalValueClassProperties(baseClass, marshalVar);
MarshalValueClassProperties(@base.Class, marshalVar);
}
foreach (var property in @class.Properties)

18
src/Generator/Generators/CLI/CLISourcesTemplate.cs

@ -621,13 +621,9 @@ namespace CppSharp.Generators.CLI @@ -621,13 +621,9 @@ namespace CppSharp.Generators.CLI
private void GenerateStructMarshaling(Class @class, string nativeVar)
{
foreach (var @base in @class.Bases)
foreach (var @base in @class.Bases.Where(b => b.IsClass && !b.Class.Ignore))
{
if (!@base.IsClass || @base.Class.Ignore)
continue;
var baseClass = @base.Class;
GenerateStructMarshaling(baseClass, nativeVar);
GenerateStructMarshaling(@base.Class, nativeVar);
}
foreach (var property in @class.Properties)
@ -774,18 +770,14 @@ namespace CppSharp.Generators.CLI @@ -774,18 +770,14 @@ namespace CppSharp.Generators.CLI
private void GenerateValueTypeConstructorCallProperties(Class @class)
{
foreach (var @base in @class.Bases)
foreach (var @base in @class.Bases.Where(b => b.IsClass && !b.Class.ExplicityIgnored))
{
if (!@base.IsClass || @base.Class.Ignore)
continue;
var baseClass = @base.Class;
GenerateValueTypeConstructorCallProperties(baseClass);
GenerateValueTypeConstructorCallProperties(@base.Class);
}
foreach (var property in @class.Properties)
{
if (property.Ignore || property.Field == null) continue;
if (property.ExplicityIgnored || property.Field == null) continue;
var varName = string.Format("_native.{0}", property.Field.OriginalName);

Loading…
Cancel
Save