PageRenderTime 24ms CodeModel.GetById 13ms app.highlight 7ms RepoModel.GetById 2ms app.codeStats 0ms

/NRefactory/ICSharpCode.NRefactory.CSharp/Ast/Statements/IfElseStatement.cs

http://github.com/icsharpcode/ILSpy
C# | 103 lines | 61 code | 14 blank | 28 comment | 4 complexity | a986c5ac75a26bf189a89d8cbf4d80a6 MD5 | raw file
  1// 
  2// IfElseStatement.cs
  3//
  4// Author:
  5//       Mike Kr├╝ger <mkrueger@novell.com>
  6// 
  7// Copyright (c) 2009 Novell, Inc (http://www.novell.com)
  8// 
  9// Permission is hereby granted, free of charge, to any person obtaining a copy
 10// of this software and associated documentation files (the "Software"), to deal
 11// in the Software without restriction, including without limitation the rights
 12// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 13// copies of the Software, and to permit persons to whom the Software is
 14// furnished to do so, subject to the following conditions:
 15// 
 16// The above copyright notice and this permission notice shall be included in
 17// all copies or substantial portions of the Software.
 18// 
 19// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 20// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 21// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 22// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 23// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 24// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 25// THE SOFTWARE.
 26
 27namespace ICSharpCode.NRefactory.CSharp
 28{
 29	/// <summary>
 30	/// if (Condition) TrueStatement else FalseStatement
 31	/// </summary>
 32	public class IfElseStatement : Statement
 33	{
 34		public readonly static TokenRole IfKeywordRole = new TokenRole ("if");
 35		public readonly static Role<Expression> ConditionRole = Roles.Condition;
 36		public readonly static Role<Statement> TrueRole = new Role<Statement>("True", Statement.Null);
 37		public readonly static TokenRole ElseKeywordRole = new TokenRole ("else");
 38		public readonly static Role<Statement> FalseRole = new Role<Statement>("False", Statement.Null);
 39		
 40		public CSharpTokenNode IfToken {
 41			get { return GetChildByRole (IfKeywordRole); }
 42		}
 43		
 44		public CSharpTokenNode LParToken {
 45			get { return GetChildByRole (Roles.LPar); }
 46		}
 47		
 48		public Expression Condition {
 49			get { return GetChildByRole (ConditionRole); }
 50			set { SetChildByRole (ConditionRole, value); }
 51		}
 52		
 53		public CSharpTokenNode RParToken {
 54			get { return GetChildByRole (Roles.RPar); }
 55		}
 56		
 57		public Statement TrueStatement {
 58			get { return GetChildByRole (TrueRole); }
 59			set { SetChildByRole (TrueRole, value); }
 60		}
 61		
 62		public CSharpTokenNode ElseToken {
 63			get { return GetChildByRole (ElseKeywordRole); }
 64		}
 65		
 66		public Statement FalseStatement {
 67			get { return GetChildByRole (FalseRole); }
 68			set { SetChildByRole (FalseRole, value); }
 69		}
 70		
 71		public override void AcceptVisitor (IAstVisitor visitor)
 72		{
 73			visitor.VisitIfElseStatement (this);
 74		}
 75			
 76		public override T AcceptVisitor<T> (IAstVisitor<T> visitor)
 77		{
 78			return visitor.VisitIfElseStatement (this);
 79		}
 80		
 81		public override S AcceptVisitor<T, S> (IAstVisitor<T, S> visitor, T data)
 82		{
 83			return visitor.VisitIfElseStatement (this, data);
 84		}
 85		
 86		protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
 87		{
 88			IfElseStatement o = other as IfElseStatement;
 89			return o != null && this.Condition.DoMatch(o.Condition, match) && this.TrueStatement.DoMatch(o.TrueStatement, match) && this.FalseStatement.DoMatch(o.FalseStatement, match);
 90		}
 91		
 92		public IfElseStatement()
 93		{
 94		}
 95		
 96		public IfElseStatement(Expression condition, Statement trueStatement, Statement falseStatement = null)
 97		{
 98			this.Condition = condition;
 99			this.TrueStatement = trueStatement;
100			this.FalseStatement = falseStatement;
101		}
102	}
103}