Browse Source

Extract field generation into its own method.

pull/16/merge
triton 12 years ago
parent
commit
5f4edce340
  1. 51
      src/Generator/Generators/CSharp/CSharpTextTemplate.cs

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

@ -581,37 +581,42 @@ namespace CppSharp.Generators.CSharp @@ -581,37 +581,42 @@ namespace CppSharp.Generators.CSharp
foreach (var field in @class.Fields)
{
if (ASTUtils.CheckIgnoreField(@class, field)) continue;
GenerateClassField(@class, isInternal, field);
}
}
PushBlock(CSharpBlockKind.Field);
private void GenerateClassField(Class @class, bool isInternal, Field field)
{
if (ASTUtils.CheckIgnoreField(@class, field)) return;
if (isInternal)
{
WriteLine("[FieldOffset({0})]", field.OffsetInBytes);
PushBlock(CSharpBlockKind.Field);
var result = field.Type.Visit(TypePrinter, field.QualifiedType.Qualifiers);
if (isInternal)
{
WriteLine("[FieldOffset({0})]", field.OffsetInBytes);
Write("public {0} {1}", result.Type, SafeIdentifier(field.OriginalName));
var result = field.Type.Visit(TypePrinter, field.QualifiedType.Qualifiers);
if (!string.IsNullOrWhiteSpace(result.NameSuffix))
Write(result.NameSuffix);
Write("public {0} {1}", result.Type, SafeIdentifier(field.OriginalName));
WriteLine(";");
}
else if (@class.IsRefType)
{
GenerateFieldProperty(field);
}
else
{
GenerateDeclarationCommon(field);
if (@class.IsUnion)
WriteLine("[FieldOffset({0})]", field.Offset);
WriteLine("public {0} {1};", field.Type, SafeIdentifier(field.Name));
}
if (!string.IsNullOrWhiteSpace(result.NameSuffix))
Write(result.NameSuffix);
PopBlock(NewLineKind.BeforeNextBlock);
WriteLine(";");
}
else if (@class.IsRefType)
{
GenerateFieldProperty(field);
}
else
{
GenerateDeclarationCommon(field);
if (@class.IsUnion)
WriteLine("[FieldOffset({0})]", field.Offset);
WriteLine("public {0} {1};", field.Type, SafeIdentifier(field.Name));
}
PopBlock(NewLineKind.BeforeNextBlock);
}
#endregion

Loading…
Cancel
Save