From afde77e9682c37e7642aeb6f4a8f8d23c5554287 Mon Sep 17 00:00:00 2001 From: marcos henrich Date: Wed, 2 Apr 2014 15:49:51 +0100 Subject: [PATCH] Refactored multiple similar foreach loops to a simpler version. --- .../Generators/CLI/CLIHeadersTemplate.cs | 30 +++++++------------ src/Generator/Generators/CLI/CLIMarshal.cs | 9 ++---- .../Generators/CLI/CLISourcesTemplate.cs | 18 ++++------- 3 files changed, 19 insertions(+), 38 deletions(-) diff --git a/src/Generator/Generators/CLI/CLIHeadersTemplate.cs b/src/Generator/Generators/CLI/CLIHeadersTemplate.cs index aa9ebf2e..64c93e0c 100644 --- a/src/Generator/Generators/CLI/CLIHeadersTemplate.cs +++ b/src/Generator/Generators/CLI/CLIHeadersTemplate.cs @@ -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 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 { // 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(); diff --git a/src/Generator/Generators/CLI/CLIMarshal.cs b/src/Generator/Generators/CLI/CLIMarshal.cs index 269384a1..45eda0ca 100644 --- a/src/Generator/Generators/CLI/CLIMarshal.cs +++ b/src/Generator/Generators/CLI/CLIMarshal.cs @@ -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 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) diff --git a/src/Generator/Generators/CLI/CLISourcesTemplate.cs b/src/Generator/Generators/CLI/CLISourcesTemplate.cs index 5dae9055..7c75378a 100644 --- a/src/Generator/Generators/CLI/CLISourcesTemplate.cs +++ b/src/Generator/Generators/CLI/CLISourcesTemplate.cs @@ -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 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);