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