From 203e8c4ddb08171663cc137df80af099ece3db77 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20L=C3=BCbe=C3=9F?= Date: Mon, 18 Dec 2023 01:43:02 +0100 Subject: [PATCH] ScriptCore: Generate GetHashCode for Vectors Fixes warnings --- ScriptCoreGenerator/VectorGenerator.cs | 27 ++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/ScriptCoreGenerator/VectorGenerator.cs b/ScriptCoreGenerator/VectorGenerator.cs index 81e17cc..434b9ea 100644 --- a/ScriptCoreGenerator/VectorGenerator.cs +++ b/ScriptCoreGenerator/VectorGenerator.cs @@ -85,6 +85,7 @@ public class VectorGenerator : ISourceGenerator GenerateEqualityOperators(vector, builder); GenerateEquals(vector, builder); + GenerateGetHashCode(vector, builder); if (receiver.ComparableReceiver.ComparableVectors.Contains(vector.VectorName)) { @@ -132,6 +133,32 @@ public class VectorGenerator : ISourceGenerator """); } + + private void GenerateGetHashCode(VectorDefinition vector, StringBuilder builder) + { + builder.Append(""" + public override int GetHashCode() + { + // Unchecked to allow overflow + unchecked + { + int hash = 17; + + """); + + for (int i = 0; i < vector.ComponentCount; i++) + { + builder.Append($"\t\t\thash = hash * 23 + {ComponentNames[i]}.GetHashCode();\n"); + } + + builder.Append(""" + return hash; + } + } + + + """); + } private void GenerateToString(VectorDefinition vector, StringBuilder builder) {