From c99640149ced6dd5cc4aeb9989c5e31f0f02ef81 Mon Sep 17 00:00:00 2001 From: Harald Martini <harald.martini@student.tugraz.at> Date: Mon, 8 Nov 2021 14:40:35 +0100 Subject: [PATCH] Added XAttributeEqualityComparer --- .../Utils/XAttributeEqualityComparer.cs | 37 +++++++++++++++++++ VectoCore/VectoCore/VectoCore.csproj | 1 + 2 files changed, 38 insertions(+) create mode 100644 VectoCore/VectoCore/Utils/XAttributeEqualityComparer.cs diff --git a/VectoCore/VectoCore/Utils/XAttributeEqualityComparer.cs b/VectoCore/VectoCore/Utils/XAttributeEqualityComparer.cs new file mode 100644 index 0000000000..5a89d33169 --- /dev/null +++ b/VectoCore/VectoCore/Utils/XAttributeEqualityComparer.cs @@ -0,0 +1,37 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Xml.Linq; + +namespace TUGraz.VectoCore.Utils +{ + public class XAttributeEqualityComparer : IEqualityComparer<XAttribute> + { + public bool Equals(XAttribute x, XAttribute y) + { + if (ReferenceEquals(x, y)) + return true; + if (ReferenceEquals(x, null)) + return false; + if (ReferenceEquals(y, null)) + return false; + if (x.GetType() != y.GetType()) + return false; + return x.IsNamespaceDeclaration == y.IsNamespaceDeclaration && x.Name.Equals(y.Name) && x.NodeType == y.NodeType && x.Value == y.Value; + } + + public int GetHashCode(XAttribute obj) + { + unchecked + { + var hashCode = obj.IsNamespaceDeclaration.GetHashCode(); + hashCode = (hashCode * 397) ^ obj.Name.GetHashCode(); + hashCode = (hashCode * 397) ^ (int)obj.NodeType; + hashCode = (hashCode * 397) ^ obj.Value.GetHashCode(); + return hashCode; + } + } + } +} diff --git a/VectoCore/VectoCore/VectoCore.csproj b/VectoCore/VectoCore/VectoCore.csproj index 36b3a28062..df94559810 100644 --- a/VectoCore/VectoCore/VectoCore.csproj +++ b/VectoCore/VectoCore/VectoCore.csproj @@ -761,6 +761,7 @@ <DesignTime>True</DesignTime> <DependentUpon>VectoVersionCore.tt</DependentUpon> </Compile> + <Compile Include="Utils\XAttributeEqualityComparer.cs" /> <Compile Include="Utils\XMLDefinitions.cs" /> <Compile Include="Utils\XMLHelper.cs" /> <Compile Include="Utils\XmlResourceResolver.cs" /> -- GitLab