#region License
// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
// This source code is made available under the terms of the GNU Lesser General Public License v3.0
// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
#endregion
using System.Collections.Generic;
namespace MiniSqlQuery.Core
{
    /// 
    /// 	Used for sorting plugins at load time, a very simple ordering system for the plugins.
    /// 
    public class PlugInComparer : IComparer
    {
        /// 
        /// 	Orders two plugin classes.
        /// 
        /// The left side object.
        /// The right side object.
        /// The compare result.
        public int Compare(IPlugIn x, IPlugIn y)
        {
            int result;
            if (x == null && y == null)
            {
                result = 0;
            }
            else if (y == null)
            {
                result = -1;
            }
            else if (x == null)
            {
                result = 1;
            }
            else
            {
                int numX = x.RequestedLoadOrder;
                int numY = y.RequestedLoadOrder;
                result = numX - numY;
            }
            return result;
        }
    }
}