コード例 #1
0
        ///////////////////////////////////////////////////////////////////////

        #region IComparable Members
        public int CompareTo(
            object obj
            )
        {
            IMutableAnyTriplet <T1, T2, T3> other =
                obj as IMutableAnyTriplet <T1, T2, T3>;

            if (other == null)
            {
                throw new ArgumentException();
            }

            return(CompareTo(other));
        }
コード例 #2
0
        ///////////////////////////////////////////////////////////////////////

        #region System.Object Overrides
        public override bool Equals(
            object obj
            )
        {
            IMutableAnyTriplet <T1, T2, T3> triplet =
                obj as IMutableAnyTriplet <T1, T2, T3>;

            if (triplet != null)
            {
                return(GenericOps <T1> .Equals(this.X, triplet.X) &&
                       GenericOps <T2> .Equals(this.Y, triplet.Y) &&
                       GenericOps <T3> .Equals(this.Z, triplet.Z));
            }
            else
            {
                return(false);
            }
        }
コード例 #3
0
            public static bool Extract(
                IMutableAnyTriplet <T1, T2, T3> triplet,
                ref T4 x,
                ref T5 y,
                ref T6 z
                )
            {
                try
                {
                    //
                    // HACK: This is not ideal; however, we cannot use the "as"
                    //       operator unless we place a restrictions on all the
                    //       types (i.e. they must be classes).
                    //
                    T4 x2 = (T4)(object)triplet.X; /* throw */
                    T5 y2 = (T5)(object)triplet.Y; /* throw */
                    T6 z2 = (T6)(object)triplet.Z; /* throw */

                    //
                    // NOTE: Assign to the variables provided by the caller now
                    //       that we know the casts were all successful.  These
                    //       statements cannot throw.
                    //
                    x = x2; y = y2; z = z2;

                    //
                    // NOTE: All of the casts succeeded.
                    //
                    return(true);
                }
                catch
                {
                    // do nothing.
                }

                //
                // NOTE: One of the casts failed.
                //
                return(false);
            }
コード例 #4
0
        ///////////////////////////////////////////////////////////////////////

        #region IComparer<IMutableAnyTriplet<T1,T2,T3>> Members
        public int Compare(
            IMutableAnyTriplet <T1, T2, T3> x,
            IMutableAnyTriplet <T1, T2, T3> y
            )
        {
            if ((x == null) && (y == null))
            {
                return(0);
            }
            else if (x == null)
            {
                return(-1);
            }
            else if (y == null)
            {
                return(1);
            }
            else
            {
                int result = Comparer <T1> .Default.Compare(x.X, y.X);

                if (result != 0)
                {
                    return(result);
                }

                result = Comparer <T2> .Default.Compare(x.Y, y.Y);

                if (result != 0)
                {
                    return(result);
                }

                return(Comparer <T3> .Default.Compare(x.Z, y.Z));
            }
        }
コード例 #5
0
        ///////////////////////////////////////////////////////////////////////

        #region IEquatable<IMutableAnyTriplet<T1,T2,T3>> Members
        public bool Equals(
            IMutableAnyTriplet <T1, T2, T3> other
            )
        {
            return(CompareTo(other) == 0);
        }
コード例 #6
0
        ///////////////////////////////////////////////////////////////////////

        #region IComparable<IMutableAnyTriplet<T1,T2,T3>> Members
        public int CompareTo(
            IMutableAnyTriplet <T1, T2, T3> other
            )
        {
            return(Compare(this, other));
        }