// Copyright 2009-2022 Josh Close // This file is a part of CsvHelper and is dual licensed under MS-PL and Apache 2.0. // See LICENSE.txt for details or visit http://www.opensource.org/licenses/ms-pl.html for MS-PL and http://opensource.org/licenses/Apache-2.0 for Apache 2.0. // https://github.com/JoshClose/CsvHelper using System; using System.Collections.Generic; namespace CsvHelper.Configuration { /// /// Used to compare s. /// The order is by field index ascending. Any /// fields that don't have an index are pushed /// to the bottom. /// internal class MemberMapComparer : IComparer { /// /// Compares two objects and returns a value indicating whether one is less than, equal to, or greater than the other. /// /// /// Value /// Condition /// Less than zero /// is less than . /// Zero /// equals . /// Greater than zero /// is greater than . /// /// The first object to compare. /// The second object to compare. /// Neither nor implements the interface. /// -or- /// and are of different types and neither one can handle comparisons with the other. /// 2 public virtual int Compare( object x, object y ) { var xMember = x as MemberMap; var yMember = y as MemberMap; return Compare( xMember, yMember ); } /// /// Compares two objects and returns a value indicating whether one is less than, equal to, or greater than the other. /// /// /// Value /// Condition /// Less than zero /// is less than . /// Zero /// equals . /// Greater than zero /// is greater than . /// /// The first object to compare. /// The second object to compare. /// public virtual int Compare( MemberMap x, MemberMap y ) { if( x == null ) { throw new ArgumentNullException( nameof( x ) ); } if( y == null ) { throw new ArgumentNullException( nameof( y ) ); } return x.Data.Index.CompareTo( y.Data.Index ); } } }