Browse Source

Removed the setting of zero size for types that have fields in a base or virtuals.

Signed-off-by: Dimitar Dobrev <dpldobrev@yahoo.com>
pull/520/head
Dimitar Dobrev 10 years ago
parent
commit
12fcb2b13e
  1. 16
      src/Generator/Passes/CheckAbiParameters.cs

16
src/Generator/Passes/CheckAbiParameters.cs

@ -1,4 +1,5 @@ @@ -1,4 +1,5 @@
using CppSharp.AST;
using System.Linq;
using CppSharp.AST;
namespace CppSharp.Passes
{
@ -28,8 +29,10 @@ namespace CppSharp.Passes @@ -28,8 +29,10 @@ namespace CppSharp.Passes
if (!base.VisitClassDecl(@class))
return false;
if (@class.Fields.Count == 0)
@class.Layout.Size = @class.Layout.DataSize = 0;
if (HasFieldsOrVirtuals(@class))
return false;
@class.Layout.Size = @class.Layout.DataSize = 0;
return true;
}
@ -79,5 +82,12 @@ namespace CppSharp.Passes @@ -79,5 +82,12 @@ namespace CppSharp.Passes
return true;
}
private static bool HasFieldsOrVirtuals(Class @class)
{
if (@class.Fields.Count > 0 || @class.IsDynamic)
return true;
return @class.Bases.Any(@base => @base.IsClass && HasFieldsOrVirtuals(@base.Class));
}
}
}

Loading…
Cancel
Save