public TypeClass(ClassDef definition) : base(TypeKind.Class) { Definition = definition; }
private static void SaveClass(ClassDef classDef, CodeWriter writer) { SaveComments(classDef, writer); SaveDecorators(classDef, writer); writer.Write(classDef.IsFinal ? "final class {0}" : "class {0}", classDef.Name); if (classDef.SuperClass != null || classDef.SuperInterfaces.Count > 0) { Boolean isFirst = true; if (classDef.SuperClass != null) { isFirst = false; writer.Write(": {0}", classDef.SuperClass.Name); } foreach (InterfaceDef superInterfaceDef in classDef.SuperInterfaces) { if (isFirst) { isFirst = false; writer.Write(": {0}", superInterfaceDef.Name); } else { writer.Write(", {0}", superInterfaceDef.Name); } } } writer.Write(" {"); writer.Indent(); if (classDef.DefinedConstants.Count > 0) { writer.NewLine(); SaveConstants(classDef, writer); } SaveTypeScope(classDef, writer); if (classDef.Properties.Count > 0) { writer.NewLine(); for (Int32 index = 0; index < classDef.Properties.Count; index += 1) { ClassPropertyDef propertyDef = classDef.Properties[index]; SaveComments(propertyDef, writer); SaveDecorators(propertyDef, writer); String prefix = propertyDef.IsFinal ? (propertyDef.IsOverride ? "final override " : "final ") : (propertyDef.IsOverride ? "override ": ""); if (propertyDef.Default == null) { writer.WriteLine("{0}{1} {2};", prefix, propertyDef.Type, propertyDef.Name); } else { writer.WriteLine("{0}{1} {2} = {3};", prefix, propertyDef.Type, propertyDef.Name, propertyDef.Default); } if (index + 1 < classDef.Properties.Count) { writer.NewLine(); } } } writer.Dedent(); writer.WriteLine("}"); }