using System;
namespace AnticipatingMinds.Genesis.CodeDOM{
/// <summary>
/// Represents a 'lock' statement.
/// </summary>
/// <remarks>
/// The lock statement obtains the mutual-exclusion lock for a given object,
/// executes a statement, and then releases the lock.
/// (ECMA 334. Page 200, Line 3)
/// </remarks>
[Serializable]
public class CodeLockStatement : CodeEmbeddedStatement
{
#region Instance constructors
/// <summary>
/// Initializes new instance of the <see cref="CodeLockStatement"/> class.
/// </summary>
public CodeLockStatement():this(null,null){}
/// <summary>
/// Initializes new instance of the <see cref="CodeLockStatement"/> class.
/// </summary>
/// <param name="lockExpression"></param>
public CodeLockStatement(CodeExpression lockExpression):this(lockExpression,null){}
/// <summary>
/// Initializes new instance of the <see cref="CodeLockStatement"/> class.
/// </summary>
/// <param name="lockExpression">Expression to lock to.</param>
/// <param name="statement">Statement(s) protected by lock.</param>
public CodeLockStatement(CodeExpression lockExpression,CodeEmbeddedStatement statement)
{
this.statement = statement;
this.lockExpression = lockExpression;
}
#endregion Instance constructors
#region Public instance properties
/// <summary>
/// Gets or sets statement(s) protected by lock.
/// </summary>
public CodeEmbeddedStatement Statement
{
get
{
return statement;
}
set
{
statement = value;
}
}
/// <summary>
/// Gets or sets 'lock' expression.
/// </summary>
public CodeExpression Expression
{
get
{
return lockExpression;
}
set
{
lockExpression = value;
}
}
#endregion Public instance properties
#region Private instance fields
private CodeEmbeddedStatement statement;
private CodeExpression lockExpression;
#endregion Private instance fields
}
}
|