Free cookie consent management tool by TermsFeed Policy Generator

source: tags/3.3.12/HeuristicLab.ExtLibs/HeuristicLab.NRefactory/5.5.0/NRefactory-5.5.0/Utils/CompositeFormatStringParser/FormatItem.cs @ 13398

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

#2077: created branch and added first version

File size: 2.8 KB
Line 
1//
2// FormatItem.cs
3//
4// Author:
5//       Simon Lindgren <simon.n.lindgren@gmail.com>
6//
7// Copyright (c) 2012 Simon Lindgren
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.Utils
28{
29  public class FormatItem : FormatStringSegmentBase
30  {
31    public FormatItem (int index, int? alignment = null, string formatString = null)
32    {
33      Index = index;
34      Alignment = alignment;
35      FormatString = formatString;
36    }
37
38    public int Index { get; private set; }
39
40    public int? Alignment { get; private set; }
41
42    public string FormatString { get; private set; }
43
44    #region Equality
45    public override bool Equals (object obj)
46    {
47      if (obj == null)
48        return false;
49      if (obj.GetType () != typeof(FormatItem))
50        return false;
51      var other = (FormatItem)obj;
52       
53      return FieldsEquals (other);
54    }
55     
56    public bool Equals (FormatItem other)
57    {
58      if (other == null)
59        return false;
60       
61      return FieldsEquals (other);
62    }
63
64    bool FieldsEquals (FormatItem other)
65    {
66      return Index == other.Index &&
67        Alignment == other.Alignment &&
68        FormatString == other.FormatString &&
69        StartLocation == other.StartLocation &&
70        EndLocation == other.EndLocation;
71    }
72     
73    public override int GetHashCode ()
74    {
75      unchecked {
76        int hash = 23;
77        hash = hash * 37 + Index.GetHashCode ();
78        hash = hash * 37 + Alignment.GetHashCode ();
79        hash = hash * 37 + FormatString.GetHashCode ();
80        hash = hash * 37 + StartLocation.GetHashCode ();
81        hash = hash * 37 + EndLocation.GetHashCode ();
82        return hash;
83      }
84    }
85    #endregion
86
87    public override string ToString ()
88    {
89      return string.Format ("[FormatItem: Index={0}, Alignment={1}, FormatString={2}, StartLocation={3}, EndLocation={4}]", Index, Alignment, FormatString, StartLocation, EndLocation);
90    }
91  }
92
93}
Note: See TracBrowser for help on using the repository browser.