From: Michael D. <mik...@us...> - 2004-05-25 17:14:46
|
Update of /cvsroot/nhibernate/nhibernate/src/NHibernate/SqlCommand In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv10900/NHibernate/SqlCommand Modified Files: Parameter.cs ParameterLength.cs ParameterPrecisionScale.cs SqlString.cs Log Message: added an override to GetHashCode Index: Parameter.cs =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate/SqlCommand/Parameter.cs,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** Parameter.cs 13 Apr 2004 13:01:59 -0000 1.4 --- Parameter.cs 25 May 2004 17:14:27 -0000 1.5 *************** *** 140,144 **** } ! public override bool Equals(object obj) { Parameter rhs; --- 140,147 ---- } ! #region object Members ! ! public override bool Equals(object obj) ! { Parameter rhs; *************** *** 157,165 **** } - // override to prevent compiler warning CS0659 - // TODO: this may need a different impl public override int GetHashCode() { ! return base.GetHashCode (); } --- 160,177 ---- } public override int GetHashCode() { ! int hashCode; ! ! unchecked ! { ! hashCode = dbType.GetHashCode() + name.GetHashCode(); ! if(tableAlias!=null) ! { ! hashCode += tableAlias.GetHashCode(); ! } ! ! return hashCode; ! } } *************** *** 171,178 **** } ! #region ICloneable Members ! public Parameter Clone() { Parameter paramClone = (Parameter)this.MemberwiseClone(); --- 183,192 ---- } ! #endregion ! #region ICloneable Members ! public Parameter Clone() ! { Parameter paramClone = (Parameter)this.MemberwiseClone(); Index: SqlString.cs =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate/SqlCommand/SqlString.cs,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** SqlString.cs 20 Mar 2004 22:28:50 -0000 1.5 --- SqlString.cs 25 May 2004 17:14:27 -0000 1.6 *************** *** 14,18 **** public class SqlString : ICloneable { - readonly object[] sqlParts; --- 14,17 ---- *************** *** 50,53 **** --- 49,90 ---- } + #region object Members + + + public override bool Equals(object obj) + { + SqlString rhs; + + // Step1: Perform an equals test + if(obj==this) return true; + + // Step 2: Instance of check + rhs = obj as SqlString; + if(rhs==null) return false; + + //Step 3: Check each important field + for(int i = 0; i < sqlParts.Length; i++) + { + if( this.sqlParts[i].Equals(rhs.SqlParts[i]) == false ) return false; + } + + return true; + } + + public override int GetHashCode() + { + int hashCode = 0; + + unchecked + { + for(int i = 0; i < sqlParts.Length; i++) + { + hashCode += sqlParts[i].GetHashCode(); + } + } + + return hashCode; + } + /// <summary> /// Returns the SqlString in a string where it looks like *************** *** 62,68 **** { StringBuilder builder = new StringBuilder(sqlParts.Length * 15); ! foreach(object part in sqlParts) { ! builder.Append(part.ToString()); } --- 99,106 ---- { StringBuilder builder = new StringBuilder(sqlParts.Length * 15); ! ! for(int i = 0; i < sqlParts.Length; i++) { ! builder.Append(sqlParts[i].ToString()); } *************** *** 70,77 **** } #region ICloneable Members ! public SqlString Clone() { object[] clonedParts = new object[sqlParts.Length]; Parameter param; --- 108,117 ---- } + #endregion #region ICloneable Members ! public SqlString Clone() ! { object[] clonedParts = new object[sqlParts.Length]; Parameter param; Index: ParameterLength.cs =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate/SqlCommand/ParameterLength.cs,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** ParameterLength.cs 13 Apr 2004 13:01:59 -0000 1.3 --- ParameterLength.cs 25 May 2004 17:14:27 -0000 1.4 *************** *** 36,41 **** return param; } ! ! public override bool Equals(object obj) { if(base.Equals(obj)) { ParameterLength rhs; --- 36,44 ---- return param; } ! ! #region object Members ! ! public override bool Equals(object obj) ! { if(base.Equals(obj)) { ParameterLength rhs; *************** *** 53,63 **** } - // override to prevent compiler warning CS0659 - // TODO: this may need a different impl public override int GetHashCode() { ! return base.GetHashCode (); } } --- 56,68 ---- } public override int GetHashCode() { ! unchecked ! { ! return base.GetHashCode() + length.GetHashCode(); ! } } + #endregion } Index: ParameterPrecisionScale.cs =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate/SqlCommand/ParameterPrecisionScale.cs,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** ParameterPrecisionScale.cs 13 Apr 2004 13:01:59 -0000 1.3 --- ParameterPrecisionScale.cs 25 May 2004 17:14:27 -0000 1.4 *************** *** 45,49 **** } ! public override bool Equals(object obj) { if(base.Equals(obj)) { ParameterPrecisionScale rhs; --- 45,52 ---- } ! #region object Members ! ! public override bool Equals(object obj) ! { if(base.Equals(obj)) { ParameterPrecisionScale rhs; *************** *** 54,59 **** //Step 3: Check each important field ! return this.Precision.Equals(rhs.Precision) ! && this.Scale.Equals(rhs.Scale); } else { --- 57,62 ---- //Step 3: Check each important field ! return this.Precision==rhs.Precision ! && this.Scale==rhs.Scale; } else { *************** *** 62,72 **** } - // override to prevent compiler warning CS0659 - // TODO: this may need a different impl public override int GetHashCode() { ! return base.GetHashCode (); } } --- 65,77 ---- } public override int GetHashCode() { ! unchecked ! { ! return base.GetHashCode() + precision.GetHashCode() + scale.GetHashCode(); ! } } + #endregion } |