// 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 );
}
}
}