1
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team
3
// Permission is hereby granted, free of charge, to any person obtaining a copy of this
4
// software and associated documentation files (the "Software"), to deal in the Software
5
// without restriction, including without limitation the rights to use, copy, modify, merge,
6
// publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons
7
// to whom the Software is furnished to do so, subject to the following conditions:
9
// The above copyright notice and this permission notice shall be included in all copies or
10
// substantial portions of the Software.
12
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
13
// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
14
// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
15
// FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
16
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
17
// DEALINGS IN THE SOFTWARE.
20
using System.Collections.Generic;
23
namespace ICSharpCode.NRefactory.TypeSystem.Implementation
26
/// Default implementation of <see cref="IParameter"/>.
28
public sealed class DefaultParameter : IParameter
32
readonly DomRegion region;
33
readonly IList<IAttribute> attributes;
34
readonly bool isRef, isOut, isParams, isOptional;
35
readonly object defaultValue;
37
public DefaultParameter(IType type, string name)
40
throw new ArgumentNullException("type");
42
throw new ArgumentNullException("name");
47
public DefaultParameter(IType type, string name, DomRegion region = default(DomRegion), IList<IAttribute> attributes = null,
48
bool isRef = false, bool isOut = false, bool isParams = false, bool isOptional = false, object defaultValue = null)
51
throw new ArgumentNullException("type");
53
throw new ArgumentNullException("name");
57
this.attributes = attributes;
60
this.isParams = isParams;
61
this.isOptional = isOptional;
62
this.defaultValue = defaultValue;
65
public IList<IAttribute> Attributes {
66
get { return attributes; }
77
public bool IsParams {
78
get { return isParams; }
81
public bool IsOptional {
82
get { return isOptional; }
89
public DomRegion Region {
90
get { return region; }
97
bool IVariable.IsConst {
101
public object ConstantValue {
102
get { return defaultValue; }
105
public override string ToString()
107
return ToString(this);
110
public static string ToString(IParameter parameter)
112
StringBuilder b = new StringBuilder();
117
if (parameter.IsParams)
119
b.Append(parameter.Name);
121
b.Append(parameter.Type.ReflectionName);
122
if (parameter.IsOptional) {
124
if (parameter.ConstantValue != null)
125
b.Append(parameter.ConstantValue.ToString());