Free cookie consent management tool by TermsFeed Policy Generator

source: branches/CodeEditor/HeuristicLab.ExtLibs/HeuristicLab.NRefactory/5.5.0/NRefactory.CSharp-5.5.0/Ast/TypeMembers/ParameterDeclaration.cs @ 11700

Last change on this file since 11700 was 11700, checked in by jkarder, 9 years ago

#2077: created branch and added first version

File size: 4.2 KB
Line 
1//
2// ParameterDeclarationExpression.cs
3//
4// Author:
5//       Mike Krüger <mkrueger@novell.com>
6//
7// Copyright (c) 2010 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
27using System;
28using System.Collections.Generic;
29using System.Linq;
30
31namespace ICSharpCode.NRefactory.CSharp
32{
33  public enum ParameterModifier {
34    None,
35    Ref,
36    Out,
37    Params,
38    This
39  }
40 
41  public class ParameterDeclaration : AstNode
42  {
43    public static readonly Role<AttributeSection> AttributeRole = EntityDeclaration.AttributeRole;
44    public static readonly TokenRole RefModifierRole = new TokenRole("ref");
45    public static readonly TokenRole OutModifierRole = new TokenRole("out");
46    public static readonly TokenRole ParamsModifierRole = new TokenRole("params");
47    public static readonly TokenRole ThisModifierRole = new TokenRole("this");
48   
49    public override NodeType NodeType {
50      get {
51        return NodeType.Unknown;
52      }
53    }
54   
55    public AstNodeCollection<AttributeSection> Attributes {
56      get { return GetChildrenByRole (AttributeRole); }
57    }
58   
59    ParameterModifier parameterModifier;
60   
61    public ParameterModifier ParameterModifier {
62      get { return parameterModifier; }
63      set {
64        ThrowIfFrozen();
65        parameterModifier = value;
66      }
67    }
68   
69    public AstType Type {
70      get { return GetChildByRole (Roles.Type); }
71      set { SetChildByRole (Roles.Type, value); }
72    }
73   
74    public string Name {
75      get {
76        return GetChildByRole (Roles.Identifier).Name;
77      }
78      set {
79        SetChildByRole (Roles.Identifier, Identifier.Create (value));
80      }
81    }
82   
83    public Identifier NameToken {
84      get {
85        return GetChildByRole (Roles.Identifier);
86      }
87      set {
88        SetChildByRole (Roles.Identifier, value);
89      }
90    }
91
92    public CSharpTokenNode AssignToken {
93      get { return GetChildByRole (Roles.Assign); }
94    }
95
96    public Expression DefaultExpression {
97      get { return GetChildByRole (Roles.Expression); }
98      set { SetChildByRole (Roles.Expression, value); }
99    }
100   
101    public override void AcceptVisitor (IAstVisitor visitor)
102    {
103      visitor.VisitParameterDeclaration (this);
104    }
105     
106    public override T AcceptVisitor<T> (IAstVisitor<T> visitor)
107    {
108      return visitor.VisitParameterDeclaration (this);
109    }
110
111    public override S AcceptVisitor<T, S> (IAstVisitor<T, S> visitor, T data)
112    {
113      return visitor.VisitParameterDeclaration (this, data);
114    }
115   
116    protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
117    {
118      ParameterDeclaration o = other as ParameterDeclaration;
119      return o != null && this.Attributes.DoMatch(o.Attributes, match) && this.ParameterModifier == o.ParameterModifier
120        && this.Type.DoMatch(o.Type, match) && MatchString(this.Name, o.Name)
121        && this.DefaultExpression.DoMatch(o.DefaultExpression, match);
122    }
123   
124    public ParameterDeclaration()
125    {
126    }
127   
128    public ParameterDeclaration(AstType type, string name, ParameterModifier modifier = ParameterModifier.None)
129    {
130      Type = type;
131      Name = name;
132      ParameterModifier = modifier;
133    }
134
135    public ParameterDeclaration(string name, ParameterModifier modifier = ParameterModifier.None)
136    {
137      Name = name;
138      ParameterModifier = modifier;
139    }
140
141    public new ParameterDeclaration Clone()
142    {
143      return (ParameterDeclaration)base.Clone();
144    }
145  }
146}
147
Note: See TracBrowser for help on using the repository browser.