コード例 #1
0
        public void Render(
            StringBuilder builder,
            bool isPublic,
            bool isInnerClass,
            CodegenIndent indent,
            int additionalIndent)
        {
            if (OptionalComment != null) {
                indent.Indent(builder, 1 + additionalIndent);
                builder.Append("// ");
                builder.Append(OptionalComment);
                builder.Append("\n");
            }

            indent.Indent(builder, 1 + additionalIndent);
            if (isPublic) {
                builder.Append("public ");
            }

            if (Modifiers.IsOverride()) {
                builder.Append("override ");
            }
            if (Modifiers.IsVirtual()) {
                builder.Append("virtual ");
            }

            if (ReturnType != null) {
                AppendClassName(builder, ReturnType);
            }
            else {
                builder.Append(ReturnTypeName);
            }

            builder.Append(" ");
            builder.Append(Name);
            builder.Append(" {\n");

            if (GetterBlock.IsNotEmpty()) {
                indent.Indent(builder, additionalIndent + 2);
                builder.Append("get {\n");
                GetterBlock.Render(builder, isInnerClass, 3 + additionalIndent, indent);
                indent.Indent(builder, additionalIndent + 2);
                builder.Append("}\n");
            }

            if (SetterBlock.IsNotEmpty()) {
                indent.Indent(builder, additionalIndent + 2);
                builder.Append("set {\n");
                SetterBlock.Render(builder, isInnerClass, 3 + additionalIndent, indent);
                indent.Indent(builder, additionalIndent + 2);
                builder.Append("}\n");
            }

            indent.Indent(builder, 1 + additionalIndent);
            builder.Append("}\n");
        }
コード例 #2
0
ファイル: CodegenMethodWGraph.cs プロジェクト: lanicon/nesper
        public void Render(
            StringBuilder builder,
            bool isPublic,
            bool isInnerClass,
            CodegenIndent indent,
            int additionalIndent)
        {
            if (Footprint.OptionalComment != null)
            {
                indent.Indent(builder, 1 + additionalIndent);
                builder
                    .Append("// ")
                    .Append(Footprint.OptionalComment)
                    .Append("\n");
            }

            indent.Indent(builder, 1 + additionalIndent);
            if (isPublic)
            {
                builder.Append("public ");
            }
            else
            {
                // We found that there's an important distinction with internal classes between Java and C#.  In Java
                // private methods in an inner class are still visible and callable between parent and child.  In C#
                // this is not true.  We alleviate this by making the default method access internal.
                builder.Append("internal ");
            }

            if (Modifiers.IsStatic())
            {
                builder.Append("static ");
            }

            if (Modifiers.IsOverride())
            {
                builder.Append("override ");
            }

            if (Modifiers.IsVirtual())
            {
                builder.Append("virtual ");
            }

            if (Footprint.ReturnType != null)
            {
                AppendClassName(builder, Footprint.ReturnType);
            }
            else
            {
                builder.Append(Footprint.ReturnTypeName);
            }

            builder
                .Append(" ")
                .Append(Name)
                .Append("(");

            var delimiter = "";
            foreach (var param in Footprint.Params)
            {
                builder.Append(delimiter);
                param.Render(builder);
                delimiter = ",";
            }

            builder.Append(")");

            builder.Append("{\n");
            Block.Render(builder, isInnerClass, 2 + additionalIndent, indent);
            indent.Indent(builder, 1 + additionalIndent);
            builder.Append("}\n");
        }
コード例 #3
0
        public void Render(
            StringBuilder builder,
            bool isPublic,
            bool isInnerClass,
            CodegenIndent indent,
            int additionalIndent)
        {
            if (Footprint.OptionalComment != null)
            {
                indent.Indent(builder, 1 + additionalIndent);
                builder
                    .Append("// ")
                    .Append(Footprint.OptionalComment)
                    .Append("\n");
            }

            indent.Indent(builder, 1 + additionalIndent);
            if (isPublic)
            {
                builder.Append("public ");
            }

            if (IsStatic)
            {
                builder.Append("static ");
            }

            if (IsOverride)
            {
                builder.Append("override ");
            }

            if (Footprint.ReturnType != null)
            {
                AppendClassName(builder, Footprint.ReturnType);
            }
            else
            {
                builder.Append(Footprint.ReturnTypeName);
            }

            builder
                .Append(" ")
                .Append(Name)
                .Append("(");

            var delimiter = "";
            foreach (var param in Footprint.Params)
            {
                builder.Append(delimiter);
                param.Render(builder);
                delimiter = ",";
            }

            builder.Append(")");

            builder.Append("{\n");
            Block.Render(builder, isInnerClass, 2 + additionalIndent, indent);
            indent.Indent(builder, 1 + additionalIndent);
            builder.Append("}\n");
        }