Пример #1
0
 public TypeClass(ClassDef definition)
     : base(TypeKind.Class)
 {
     Definition = definition;
 }
Пример #2
0
        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("}");
        }