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
foreach (var field in @class.Fields) 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) PushBlock(CSharpBlockKind.Field);
{
WriteLine("[FieldOffset({0})]", field.OffsetInBytes);
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("public {0} {1}", result.Type, SafeIdentifier(field.OriginalName));
Write(result.NameSuffix);
WriteLine(";"); if (!string.IsNullOrWhiteSpace(result.NameSuffix))
} Write(result.NameSuffix);
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); 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 #endregion

Loading…
Cancel
Save