1*1b3f573fSAndroid Build Coastguard Worker using System; 2*1b3f573fSAndroid Build Coastguard Worker 3*1b3f573fSAndroid Build Coastguard Worker namespace Google.Protobuf 4*1b3f573fSAndroid Build Coastguard Worker { 5*1b3f573fSAndroid Build Coastguard Worker /// <summary> 6*1b3f573fSAndroid Build Coastguard Worker /// Struct used to hold the keys for the fieldByNumber table in DescriptorPool and the keys for the 7*1b3f573fSAndroid Build Coastguard Worker /// extensionByNumber table in ExtensionRegistry. 8*1b3f573fSAndroid Build Coastguard Worker /// </summary> 9*1b3f573fSAndroid Build Coastguard Worker internal struct ObjectIntPair<T> : IEquatable<ObjectIntPair<T>> where T : class 10*1b3f573fSAndroid Build Coastguard Worker { 11*1b3f573fSAndroid Build Coastguard Worker private readonly int number; 12*1b3f573fSAndroid Build Coastguard Worker private readonly T obj; 13*1b3f573fSAndroid Build Coastguard Worker ObjectIntPairGoogle.Protobuf.ObjectIntPair14*1b3f573fSAndroid Build Coastguard Worker internal ObjectIntPair(T obj, int number) 15*1b3f573fSAndroid Build Coastguard Worker { 16*1b3f573fSAndroid Build Coastguard Worker this.number = number; 17*1b3f573fSAndroid Build Coastguard Worker this.obj = obj; 18*1b3f573fSAndroid Build Coastguard Worker } 19*1b3f573fSAndroid Build Coastguard Worker EqualsGoogle.Protobuf.ObjectIntPair20*1b3f573fSAndroid Build Coastguard Worker public bool Equals(ObjectIntPair<T> other) 21*1b3f573fSAndroid Build Coastguard Worker { 22*1b3f573fSAndroid Build Coastguard Worker return obj == other.obj 23*1b3f573fSAndroid Build Coastguard Worker && number == other.number; 24*1b3f573fSAndroid Build Coastguard Worker } 25*1b3f573fSAndroid Build Coastguard Worker EqualsGoogle.Protobuf.ObjectIntPair26*1b3f573fSAndroid Build Coastguard Worker public override bool Equals(object obj) 27*1b3f573fSAndroid Build Coastguard Worker { 28*1b3f573fSAndroid Build Coastguard Worker if (obj is ObjectIntPair<T>) 29*1b3f573fSAndroid Build Coastguard Worker { 30*1b3f573fSAndroid Build Coastguard Worker return Equals((ObjectIntPair<T>)obj); 31*1b3f573fSAndroid Build Coastguard Worker } 32*1b3f573fSAndroid Build Coastguard Worker return false; 33*1b3f573fSAndroid Build Coastguard Worker } 34*1b3f573fSAndroid Build Coastguard Worker GetHashCodeGoogle.Protobuf.ObjectIntPair35*1b3f573fSAndroid Build Coastguard Worker public override int GetHashCode() 36*1b3f573fSAndroid Build Coastguard Worker { 37*1b3f573fSAndroid Build Coastguard Worker return obj.GetHashCode() * ((1 << 16) - 1) + number; 38*1b3f573fSAndroid Build Coastguard Worker } 39*1b3f573fSAndroid Build Coastguard Worker } 40*1b3f573fSAndroid Build Coastguard Worker } 41