2
// <copyright see="prj:///doc/copyright.txt"/>
3
// <license see="prj:///doc/license.txt"/>
4
// <owner name="none" email=""/>
5
// <version>$Revision: 975 $</version>
9
using System.Diagnostics;
10
using System.Collections;
11
using System.Collections.Generic;
13
namespace ICSharpCode.NRefactory.Parser.AST
15
public class LocalVariableDeclaration : Statement
17
TypeReference typeReference;
18
Modifier modifier = Modifier.None;
19
List<VariableDeclaration> variables = new List<VariableDeclaration>(1);
21
public TypeReference TypeReference {
26
typeReference = TypeReference.CheckNull(value);
30
public Modifier Modifier {
39
public List<VariableDeclaration> Variables {
45
public TypeReference GetTypeForVariable(int variableIndex)
47
if (!typeReference.IsNull) {
51
for (int i = variableIndex; i < Variables.Count;++i) {
52
if (!((VariableDeclaration)Variables[i]).TypeReference.IsNull) {
53
return ((VariableDeclaration)Variables[i]).TypeReference;
59
public LocalVariableDeclaration(VariableDeclaration declaration) : this(TypeReference.Null)
61
Variables.Add(declaration);
64
public LocalVariableDeclaration(TypeReference typeReference)
66
this.TypeReference = typeReference;
69
public LocalVariableDeclaration(TypeReference typeReference, Modifier modifier)
71
this.TypeReference = typeReference;
72
this.modifier = modifier;
75
public LocalVariableDeclaration(Modifier modifier)
77
this.typeReference = TypeReference.Null;
78
this.modifier = modifier;
81
public VariableDeclaration GetVariableDeclaration(string variableName)
83
foreach (VariableDeclaration variableDeclaration in variables) {
84
if (variableDeclaration.Name == variableName) {
85
return variableDeclaration;
91
public override object AcceptVisitor(IAstVisitor visitor, object data)
93
return visitor.Visit(this, data);
96
public override string ToString()
98
return String.Format("[LocalVariableDeclaration: Type={0}, Modifier ={1} Variables={2}]",
101
GetCollectionString(variables));