- Nova.0.1.zip
- Nova.CodeDOM
- CodeDOM
- Annotations
- Base
- CodeUnit.cs
- Expressions
- AnonymousMethods
- Base
- Operators
- Other
- References
- Base
- GotoTargets
- Methods
- Namespaces
- Other
- Properties
- Types
- Variables
- Namespaces
- Statements
- Base
- Conditionals
- Exceptions
- Generics
- Iterators
- Jumps
- Loops
- Methods
- Miscellaneous
- Namespaces
- Properties
- Types
- Variables
- Configuration.cs
- Log.cs
- Nova.CodeDOM.csproj
- Properties
- Rendering
- Utilities
- Nova.Examples
- Nova.sln
- Nova.Test
|
// The Nova Project by Ken Beckett.
// Copyright (C) 2007-2012 Inevitable Software, all rights reserved.
// Released under the Common Development and Distribution License, CDDL-1.0: http://opensource.org/licenses/cddl1.php
using Nova.Rendering;
namespace Nova.CodeDOM
{
/// <summary>
/// Represents a stand-alone block of code restricted to a local scope (surrounded by braces).
/// </summary>
public class BlockDecl : BlockStatement
{
#region /* CONSTRUCTORS */
/// <summary>
/// Create a <see cref="BlockDecl"/>.
/// </summary>
public BlockDecl(CodeObject body)
: base(body, false)
{ }
/// <summary>
/// Create a <see cref="BlockDecl"/>.
/// </summary>
public BlockDecl()
: base(null, false)
{ }
/// <summary>
/// Create a <see cref="BlockDecl"/> with the specified <see cref="CodeObject"/>s in the body.
/// </summary>
public BlockDecl(params CodeObject[] codeObjects)
: base(codeObjects)
{ }
#endregion
#region /* PROPERTIES */
/// <summary>
/// Always <c>false</c>.
/// </summary>
public override bool HasHeader
{
get { return false; }
}
#endregion
#region /* METHODS */
/// <summary>
/// Attach an <see cref="Annotation"/> (<see cref="Comment"/>, <see cref="DocComment"/>, <see cref="Attribute"/>, <see cref="CompilerDirective"/>, or <see cref="Message"/>) to the <see cref="CodeObject"/>.
/// </summary>
/// <param name="annotation">The <see cref="Annotation"/>.</param>
/// <param name="atFront">Inserts at the front if true, otherwise adds at the end.</param>
public override void AttachAnnotation(Annotation annotation, bool atFront)
{
// Don't allow EOL comments on a BlockDecl since it has nothing to display them on - move
// them to the child Block so that they can be displayed.
if (annotation.IsEOL)
Body.AttachAnnotation(annotation, atFront);
else
base.AttachAnnotation(annotation, atFront);
}
#endregion
#region /* FORMATTING */
/// <summary>
/// True if the <see cref="Statement"/> has parens around its argument.
/// </summary>
public override bool HasArgumentParens
{
get { return false; }
}
/// <summary>
/// Reformat the <see cref="Block"/> body.
/// </summary>
public override void ReformatBlock()
{
// BlockDecls must always have braces and start on a new line, and default to the ending
// brace being on a new line without any preceeding blank lines.
_body.HasBraces = true;
_body.IsFirstOnLine = true;
_body.SetNewLines(1);
}
#endregion
#region /* RENDERING */
public override void AsText(CodeWriter writer, RenderFlags flags)
{
if (flags.HasFlag(RenderFlags.Description))
TypeRefBase.AsTextType(writer, GetType(), RenderFlags.None);
else
base.AsText(writer, flags);
}
protected override void AsTextStatement(CodeWriter writer, RenderFlags flags)
{
UpdateLineCol(writer, flags);
}
protected override void AsTextAfter(CodeWriter writer, RenderFlags flags)
{
base.AsTextAfter(writer, flags | RenderFlags.SuppressNewLine);
}
#endregion
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
I've been writing software since the late 70's, currently focusing mainly on C#.NET. I also like to travel around the world, and I own a Chocolate Factory (sadly, none of my employees are oompa loompas).