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

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

@ -1,4 +1,5 @@
using System; using System;
using System.Linq;
using System.Text; using System.Text;
using CppSharp.AST; using CppSharp.AST;
using CppSharp.AST.Extensions; using CppSharp.AST.Extensions;
@ -604,13 +605,9 @@ namespace CppSharp.Generators.CLI
public void MarshalValueClassProperties(Class @class, string marshalVar) 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) MarshalValueClassProperties(@base.Class, marshalVar);
continue;
var baseClass = @base.Class;
MarshalValueClassProperties(baseClass, marshalVar);
} }
foreach (var property in @class.Properties) foreach (var property in @class.Properties)

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

@ -621,13 +621,9 @@ namespace CppSharp.Generators.CLI
private void GenerateStructMarshaling(Class @class, string nativeVar) 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) GenerateStructMarshaling(@base.Class, nativeVar);
continue;
var baseClass = @base.Class;
GenerateStructMarshaling(baseClass, nativeVar);
} }
foreach (var property in @class.Properties) foreach (var property in @class.Properties)
@ -774,18 +770,14 @@ namespace CppSharp.Generators.CLI
private void GenerateValueTypeConstructorCallProperties(Class @class) 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) GenerateValueTypeConstructorCallProperties(@base.Class);
continue;
var baseClass = @base.Class;
GenerateValueTypeConstructorCallProperties(baseClass);
} }
foreach (var property in @class.Properties) 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); var varName = string.Format("_native.{0}", property.Field.OriginalName);

Loading…
Cancel
Save