Browse Source

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

pull/228/merge
marcos henrich 11 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 @@ -417,16 +417,16 @@ namespace CppSharp.Generators.CLI
// properties to the managed value subtypes.
if (@class.IsValueType)
{
foreach (var @base in @class.Bases.Where(b => b.IsClass && b.Class.IsGenerated))
{
GenerateClassFields(@base.Class);
}
foreach (var @base in @class.Bases.Where(b => b.IsClass && b.Class.IsDeclared))
{
GenerateClassFields(@base.Class);
}
}
PushIndent();
// 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
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);
if (property != null && !property.IsInRefTypeAndBackedByValueClassField())
@ -592,14 +592,14 @@ namespace CppSharp.Generators.CLI @@ -592,14 +592,14 @@ namespace CppSharp.Generators.CLI
// properties to the managed value subtypes.
if (@class.IsValueType)
{
foreach (var @base in @class.Bases.Where(b => b.IsClass && b.Class.IsGenerated))
{
GenerateClassProperties(@base.Class);
}
foreach (var @base in @class.Bases.Where(b => b.IsClass && b.Class.IsDeclared))
{
GenerateClassProperties(@base.Class);
}
}
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())
{

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

@ -618,14 +618,14 @@ namespace CppSharp.Generators.CLI @@ -618,14 +618,14 @@ namespace CppSharp.Generators.CLI
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);
}
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;
MarshalValueClassProperty(property, marshalVar);

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

@ -216,14 +216,14 @@ namespace CppSharp.Generators.CLI @@ -216,14 +216,14 @@ namespace CppSharp.Generators.CLI
{
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);
}
}
foreach (var property in @class.Properties.Where(
p => p.IsGenerated && !p.IsInRefTypeAndBackedByValueClassField()))
p => !ASTUtils.CheckIgnoreProperty(p) && !p.IsInRefTypeAndBackedByValueClassField()))
GenerateProperty(property, realOwner);
}
@ -309,8 +309,6 @@ namespace CppSharp.Generators.CLI @@ -309,8 +309,6 @@ namespace CppSharp.Generators.CLI
private void GenerateProperty(Property property, Class realOwner)
{
if (!property.IsGenerated) return;
PushBlock(CLIBlockKind.Property);
if (property.Field != null)
@ -628,14 +626,15 @@ namespace CppSharp.Generators.CLI @@ -628,14 +626,15 @@ namespace CppSharp.Generators.CLI
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);
}
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}",
nativeVar, property.Field.OriginalName);

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

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

Loading…
Cancel
Save