using System;
namespace AnticipatingMinds.Genesis.CodeDOM{
/// <summary>
/// Represents a base class for all iteration statements.
/// </summary>
/// <remarks>
/// Iteration statements repeatedly execute an embedded statement.
/// (ECMA 334. Page 188, Line 40)
/// </remarks>
[Serializable]
public abstract class CodeIterationStatements : CodeEmbeddedStatement
{
}
/// <summary>
/// Represnts 'while' statement.
/// </summary>
/// <remarks>
/// The while statement conditionally executes an embedded statement zero or more times.
/// (ECMA 334. Page 188, Line 47)
/// </remarks>
[Serializable]
public class CodeWhileStatement : CodeIterationStatements
{
#region Instance constructors
/// <summary>
/// Initializes new instance of the <see cref="CodeWhileStatement"/> class.
/// </summary>
public CodeWhileStatement() : base()
{
}
#endregion Instance constructors
#region Public instance properties
/// <summary>
/// Gets or sets 'while' condition.
/// </summary>
public CodeExpression Condition
{
get
{
return condition;
}
set
{
condition = value;
}
}
/// <summary>
/// Gets or sets statement(s) to execute while condition is true.
/// </summary>
public CodeEmbeddedStatement Statement
{
get
{
return statement;
}
set
{
statement = value;
}
}
#endregion Public instance properties
#region Private instance fields
private CodeExpression condition;
private CodeEmbeddedStatement statement;
#endregion Private instance fields
}
/// <summary>
/// Represnts 'do' statement.
/// </summary>
/// <remarks>
/// The do statement conditionally executes an embedded statement one or more times.
/// (ECMA 334. Page 189, Line 18)
/// </remarks>
[Serializable]
public class CodeDoStatement : CodeIterationStatements
{
#region Instance constructors
/// <summary>
/// Initializes new instance of the <see cref="CodeDoStatement"/> class.
/// </summary>
public CodeDoStatement() : this(null,null)
{
}
/// <summary>
/// Initializes new instance of the <see cref="CodeDoStatement"/> class.
/// </summary>
/// <param name="condition">Do condition.</param>
/// <param name="statement">Do statement.</param>
public CodeDoStatement(CodeExpression condition,CodeEmbeddedStatement statement) : base()
{
}
#endregion Instance constructors
#region Public instance properties
/// <summary>
/// Gets or sets 'do' condition.
/// </summary>
public CodeExpression Condition
{
get
{
return condition;
}
set
{
condition = value;
}
}
/// <summary>
/// Gets or sets statement(s) to execute while condition is true.
/// </summary>
public CodeEmbeddedStatement Statement
{
get
{
return statement;
}
set
{
statement = value;
}
}
#endregion Public instance properties
#region Private instance fields
private CodeExpression condition;
private CodeEmbeddedStatement statement;
#endregion Private instance fields
}
/// <summary>
/// Represnts 'for' statement.
/// </summary>
/// <remarks>
/// The for statement evaluates a sequence of initialization
/// expressions and then, while a condition is true, repeatedly executes an
/// embedded statement and evaluates a sequence of iteration expressions.
/// (ECMA 334. Page 189, Line 37)
/// </remarks>
[Serializable]
public class CodeForStatement : CodeIterationStatements
{
#region Instance constructors
/// <summary>
/// Initializes new instance of the <see cref="CodeForStatement"/> class.
/// </summary>
public CodeForStatement() : base()
{
}
#endregion Instance constructors
#region Public instance properties
/// <summary>
/// Gets statements for 'for' initializer.
/// </summary>
/// <remarks>
/// The for-initializer, if present, consists of either a local variable declaration or a list of
/// statement expressions.
/// (ECMA 334. Page 190, Line 11)
/// </remarks>
public CodeStatementCollection Initializers
{
get
{
return forInitializer;
}
}
/// <summary>
/// Gets or sets 'for' exit condition.
/// </summary>
public CodeExpression Condition
{
get
{
return forCondition;
}
set
{
forCondition = value;
}
}
/// <summary>
/// Gets 'for' iterator evaluation espressions.
/// </summary>
public CodeStatementCollection Iterators
{
get
{
return forIterator;
}
}
/// <summary>
/// Gets or sets 'for' statement(s) to execute.
/// </summary>
public CodeEmbeddedStatement Statement
{
get
{
return statement;
}
set
{
statement = value;
}
}
#endregion Public instance properties
#region Private instance fields
private CodeStatementCollection forInitializer = new CodeStatementCollection();
private CodeExpression forCondition;
private CodeStatementCollection forIterator = new CodeStatementCollection();
private CodeEmbeddedStatement statement;
#endregion Private instance fields
}
/// <summary>
/// Represnts 'foreach' statement
/// </summary>
/// <remarks>
/// The foreach statement enumerates the elements of a collection, executing an embedded
/// statement for each element of the collection.
/// (ECMA 334. Page 190, Line 39)
/// </remarks>
[Serializable]
public class CodeForEachStatement : CodeIterationStatements
{
#region Instance constructors
/// <summary>
/// Initializes new instance of the <see cref="CodeForEachStatement"/> class.
/// </summary>
public CodeForEachStatement(): base()
{
}
#endregion Instance constructors
#region Public instance properties
/// <summary>
/// Iterator type.
/// </summary>
public CodeTypeReference Type
{
get
{
return type;
}
set
{
type = value;
}
}
/// <summary>
/// Iterator variable name.
/// </summary>
public string IteratorName
{
get
{
return iteratorName;
}
set
{
iteratorName = value;
}
}
/// <summary>
/// Gets or sets 'foreach' statement(s) to execute.
/// </summary>
public CodeEmbeddedStatement Statement
{
get
{
return statement;
}
set
{
statement = value;
}
}
/// <summary>
/// Collection of values to iterate.
/// </summary>
public CodeExpression IteratedCollection
{
get
{
return iteratedCollection;
}
set
{
iteratedCollection = value;
}
}
#endregion Public instance properties
#region Private instance fields
private CodeTypeReference type;
private string iteratorName;
private CodeEmbeddedStatement statement;
private CodeExpression iteratedCollection;
#endregion Private instance fields
}
}
|