Browse Source

Remove `Layout.GetSize()` method as it's no longer relevant (#1474)

pull/1477/head
josetr 5 years ago committed by GitHub
parent
commit
051ebb82b3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 5
      src/AST/ClassExtensions.cs
  2. 6
      src/Generator/Generators/CSharp/CSharpSources.cs
  3. 8
      src/Generator/Generators/CSharp/CSharpTypePrinter.cs

5
src/AST/ClassExtensions.cs

@ -214,11 +214,6 @@ namespace CppSharp.AST @@ -214,11 +214,6 @@ namespace CppSharp.AST
b => b.Class).Any(HasDependentValueFieldInLayout);
}
public static int GetSize(this ClassLayout layout) =>
/// There's at least one ABI (System V) that gives to empty structs
/// size 1 in C++ and size 0 in C. The former causes crashes in older versions of Mono.
layout.Size == 1 && layout.DataSize == 0 ? 0 : layout.Size;
private static bool IsValueDependent(Type type)
{
var desugared = type.Desugar();

6
src/Generator/Generators/CSharp/CSharpSources.cs

@ -535,11 +535,11 @@ namespace CppSharp.Generators.CSharp @@ -535,11 +535,11 @@ namespace CppSharp.Generators.CSharp
PushBlock(BlockKind.InternalsClass);
if (@class.Layout.GetSize() > 0)
if (@class.Layout.Size > 0)
{
var layout = sequentialLayout ? "Sequential" : "Explicit";
var pack = @class.MaxFieldAlignment > 0 ? $", Pack = {@class.MaxFieldAlignment}" : string.Empty;
WriteLine($"[StructLayout(LayoutKind.{layout}, Size = {@class.Layout.GetSize()}{pack})]");
WriteLine($"[StructLayout(LayoutKind.{layout}, Size = {@class.Layout.Size}{pack})]");
}
GenerateClassInternalHead(@class);
@ -3035,7 +3035,7 @@ internal static{(@new ? " new" : string.Empty)} {printedClass} __GetInstance({Ty @@ -3035,7 +3035,7 @@ internal static{(@new ? " new" : string.Empty)} {printedClass} __GetInstance({Ty
((Method) method.OriginalFunction).IsConstructor)
{
WriteLine($@"Marshal.AllocHGlobal({
((Class) method.OriginalNamespace).Layout.GetSize()});");
((Class) method.OriginalNamespace).Layout.Size});");
names.Insert(0, Helpers.ReturnIdentifier);
}
WriteLine("{0}({1});", functionName, string.Join(", ", names));

8
src/Generator/Generators/CSharp/CSharpTypePrinter.cs

@ -91,12 +91,8 @@ namespace CppSharp.Generators.CSharp @@ -91,12 +91,8 @@ namespace CppSharp.Generators.CSharp
$"[{array.Size}]");
}
Class @class;
if (arrayType.TryGetClass(out @class))
{
return new TypePrinterResult($"fixed byte",
$"[{array.Size * @class.Layout.GetSize()}]");
}
if (arrayType.IsClass())
return new TypePrinterResult($"fixed byte", $"[{array.GetSizeInBytes()}]");
TypePrinterResult arrayElemType = array.QualifiedType.Visit(this);

Loading…
Cancel
Save