Browse Source

Replaced usage of «IsGenerated with IsDeclared when handling with base classes and value types properties.

pull/228/merge
marcos henrich 12 years ago committed by triton
parent
commit
0300f45c1b
  1. 20
      src/Generator/Generators/CLI/CLIHeadersTemplate.cs
  2. 6
      src/Generator/Generators/CLI/CLIMarshal.cs
  3. 13
      src/Generator/Generators/CLI/CLISourcesTemplate.cs
  4. 12
      src/Generator/Generators/CSharp/CSharpTextTemplate.cs

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

@ -417,16 +417,16 @@ namespace CppSharp.Generators.CLI
// properties to the managed value subtypes. // properties to the managed value subtypes.
if (@class.IsValueType) if (@class.IsValueType)
{ {
foreach (var @base in @class.Bases.Where(b => b.IsClass && b.Class.IsGenerated)) foreach (var @base in @class.Bases.Where(b => b.IsClass && b.Class.IsDeclared))
{ {
GenerateClassFields(@base.Class); GenerateClassFields(@base.Class);
} }
} }
PushIndent(); PushIndent();
// check for value types because some of the ignored fields may back properties; // check for value types because some of the ignored fields may back properties;
// not the case for ref types because the NativePtr pattern is used there // not the case for ref types because the NativePtr pattern is used there
foreach (var field in @class.Fields.Where(f => f.IsGenerated || @class.IsValueType)) foreach (var field in @class.Fields.Where(f => !ASTUtils.CheckIgnoreField(f)))
{ {
var property = @class.Properties.FirstOrDefault(p => p.Field == field); var property = @class.Properties.FirstOrDefault(p => p.Field == field);
if (property != null && !property.IsInRefTypeAndBackedByValueClassField()) if (property != null && !property.IsInRefTypeAndBackedByValueClassField())
@ -592,14 +592,14 @@ namespace CppSharp.Generators.CLI
// properties to the managed value subtypes. // properties to the managed value subtypes.
if (@class.IsValueType) if (@class.IsValueType)
{ {
foreach (var @base in @class.Bases.Where(b => b.IsClass && b.Class.IsGenerated)) foreach (var @base in @class.Bases.Where(b => b.IsClass && b.Class.IsDeclared))
{ {
GenerateClassProperties(@base.Class); GenerateClassProperties(@base.Class);
} }
} }
PushIndent(); PushIndent();
foreach (var prop in @class.Properties.Where(prop => prop.IsGenerated)) foreach (var prop in @class.Properties.Where(prop => !ASTUtils.CheckIgnoreProperty(prop)))
{ {
if (prop.IsInRefTypeAndBackedByValueClassField()) if (prop.IsInRefTypeAndBackedByValueClassField())
{ {

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

@ -618,14 +618,14 @@ namespace CppSharp.Generators.CLI
public void MarshalValueClassProperties(Class @class, string marshalVar) public void MarshalValueClassProperties(Class @class, string marshalVar)
{ {
foreach (var @base in @class.Bases.Where(b => b.IsClass && b.Class.IsGenerated)) foreach (var @base in @class.Bases.Where(b => b.IsClass && b.Class.IsDeclared))
{ {
MarshalValueClassProperties(@base.Class, marshalVar); MarshalValueClassProperties(@base.Class, marshalVar);
} }
foreach (var property in @class.Properties) foreach (var property in @class.Properties.Where( p => !ASTUtils.CheckIgnoreProperty(p)))
{ {
if (!property.IsGenerated || property.Field == null) if (property.Field == null)
continue; continue;
MarshalValueClassProperty(property, marshalVar); MarshalValueClassProperty(property, marshalVar);

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

@ -216,14 +216,14 @@ namespace CppSharp.Generators.CLI
{ {
if (@class.IsValueType) if (@class.IsValueType)
{ {
foreach (var @base in @class.Bases.Where(b => b.IsClass && b.Class.IsGenerated)) foreach (var @base in @class.Bases.Where(b => b.IsClass && b.Class.IsDeclared))
{ {
GenerateClassProperties(@base.Class, realOwner); GenerateClassProperties(@base.Class, realOwner);
} }
} }
foreach (var property in @class.Properties.Where( foreach (var property in @class.Properties.Where(
p => p.IsGenerated && !p.IsInRefTypeAndBackedByValueClassField())) p => !ASTUtils.CheckIgnoreProperty(p) && !p.IsInRefTypeAndBackedByValueClassField()))
GenerateProperty(property, realOwner); GenerateProperty(property, realOwner);
} }
@ -309,8 +309,6 @@ namespace CppSharp.Generators.CLI
private void GenerateProperty(Property property, Class realOwner) private void GenerateProperty(Property property, Class realOwner)
{ {
if (!property.IsGenerated) return;
PushBlock(CLIBlockKind.Property); PushBlock(CLIBlockKind.Property);
if (property.Field != null) if (property.Field != null)
@ -628,14 +626,15 @@ namespace CppSharp.Generators.CLI
private void GenerateStructMarshaling(Class @class, string nativeVar) private void GenerateStructMarshaling(Class @class, string nativeVar)
{ {
foreach (var @base in @class.Bases.Where(b => b.IsClass && b.Class.IsGenerated)) foreach (var @base in @class.Bases.Where(b => b.IsClass && b.Class.IsDeclared))
{ {
GenerateStructMarshaling(@base.Class, nativeVar); GenerateStructMarshaling(@base.Class, nativeVar);
} }
foreach (var property in @class.Properties) foreach (var property in @class.Properties.Where( p => !ASTUtils.CheckIgnoreProperty(p)))
{ {
if (!property.IsGenerated || property.Field == null) continue; if (property.Field == null)
continue;
var nativeField = string.Format("{0}{1}", var nativeField = string.Format("{0}{1}",
nativeVar, property.Field.OriginalName); nativeVar, property.Field.OriginalName);

12
src/Generator/Generators/CSharp/CSharpTextTemplate.cs

@ -596,7 +596,7 @@ namespace CppSharp.Generators.CSharp
{ {
foreach (var @base in @class.Bases) foreach (var @base in @class.Bases)
{ {
if (!@base.IsClass || !@base.Class.IsGenerated) if (!@base.IsClass || !@base.Class.IsDeclared)
continue; continue;
GenerateStructMarshalingProperties(@base.Class); GenerateStructMarshalingProperties(@base.Class);
@ -647,7 +647,7 @@ namespace CppSharp.Generators.CSharp
{ {
foreach (var @base in @class.Bases) foreach (var @base in @class.Bases)
{ {
if (!@base.IsClass || !@base.Class.IsGenerated) if (!@base.IsClass || !@base.Class.IsDeclared)
continue; continue;
var baseClass = @base.Class; var baseClass = @base.Class;
@ -771,7 +771,7 @@ namespace CppSharp.Generators.CSharp
foreach (var @base in @class.Bases.Where(b => !(b.Type is DependentNameType))) foreach (var @base in @class.Bases.Where(b => !(b.Type is DependentNameType)))
{ {
TypeMap typeMap; TypeMap typeMap;
if ((!Driver.TypeDatabase.FindTypeMap(@base.Type, out typeMap) && !@base.Class.IsGenerated) || if ((!Driver.TypeDatabase.FindTypeMap(@base.Type, out typeMap) && !@base.Class.IsDeclared) ||
@base.Class.OriginalClass == @class) @base.Class.OriginalClass == @class)
continue; continue;
@ -1183,7 +1183,7 @@ namespace CppSharp.Generators.CSharp
{ {
if (@class.IsValueType) if (@class.IsValueType)
{ {
foreach (var @base in @class.Bases.Where(b => b.IsClass && b.Class.IsGenerated)) foreach (var @base in @class.Bases.Where(b => b.IsClass && b.Class.IsDeclared))
{ {
GenerateClassProperties(@base.Class); GenerateClassProperties(@base.Class);
} }
@ -1956,8 +1956,8 @@ namespace CppSharp.Generators.CSharp
} }
private bool GenerateClassConstructorBase(Class @class, Method method) private bool GenerateClassConstructorBase(Class @class, Method method)
{ {
var hasBase = @class.HasBaseClass && @class.Bases[0].Class.IsGenerated; var hasBase = @class.HasBaseClass;
if (hasBase && !@class.IsValueType) if (hasBase && !@class.IsValueType)
{ {

Loading…
Cancel
Save