#region Copyright notice and license // Protocol Buffers - Google's data interchange format // Copyright 2015 Google Inc. All rights reserved. // // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file or at // https://developers.google.com/open-source/licenses/bsd #endregion using System; namespace Google.Protobuf { /// /// Struct used to hold the keys for the fieldByNumber table in DescriptorPool and the keys for the /// extensionByNumber table in ExtensionRegistry. /// internal struct ObjectIntPair : IEquatable> where T : class { private readonly int number; private readonly T obj; internal ObjectIntPair(T obj, int number) { this.number = number; this.obj = obj; } public bool Equals(ObjectIntPair other) { return obj == other.obj && number == other.number; } public override bool Equals(object obj) => obj is ObjectIntPair pair && Equals(pair); public override int GetHashCode() { return obj.GetHashCode() * ((1 << 16) - 1) + number; } } }