ScriptCore: Generate GetHashCode for Vectors

Fixes warnings
This commit is contained in:
Simon Lübeß
2023-12-18 01:43:02 +01:00
parent 945a0e5603
commit 203e8c4ddb
+27
View File
@@ -85,6 +85,7 @@ public class VectorGenerator : ISourceGenerator
GenerateEqualityOperators(vector, builder); GenerateEqualityOperators(vector, builder);
GenerateEquals(vector, builder); GenerateEquals(vector, builder);
GenerateGetHashCode(vector, builder);
if (receiver.ComparableReceiver.ComparableVectors.Contains(vector.VectorName)) 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) private void GenerateToString(VectorDefinition vector, StringBuilder builder)
{ {