Esempio n. 1
0
            public int Compare(MemberDeclarationSyntax left, MemberDeclarationSyntax right)
            {
                if (ReferenceEquals(left, right))
                {
                    return(0);
                }
                if (left == null)
                {
                    return(1);
                }
                if (right == null)
                {
                    return(-1);
                }

                CSharpSyntaxNodeData leftData  = nodeData[left];
                CSharpSyntaxNodeData rightData = nodeData[right];

                for (int i = 0; i < sorters.Count; i++)
                {
                    int comparisonResult = sorters[i].Compare(leftData, rightData);
                    if (comparisonResult != 0)
                    {
                        return(comparisonResult);
                    }
                }

                return(0);
            }
        private static int SortConversionOperator(CSharpSyntaxNodeData leftData, CSharpSyntaxNodeData rightData)
        {
            int leftSortOrder  = leftData.Identifier.Equals("implicit") ? 0 : 1;
            int rightSortOrder = rightData.Identifier.Equals("implicit") ? 0 : 1;

            return(leftSortOrder < rightSortOrder ? -1 : 1);
        }
        public override int Compare(CSharpSyntaxNodeData leftData, CSharpSyntaxNodeData rightData)
        {
            SyntaxKind leftKind  = leftData.Kind;
            SyntaxKind rightKind = rightData.Kind;

            if (leftKind == rightKind)
            {
                if (Sorters.TryGetValue(leftKind, out Func <CSharpSyntaxNodeData, CSharpSyntaxNodeData, int> comparer))
                {
                    return(comparer(leftData, rightData));
                }
                return(0);
            }

            if (!SortConfig.KindSortOrder.TryGetValue(leftKind, out int leftSortOrder))
            {
                return(1);
            }

            if (!SortConfig.KindSortOrder.TryGetValue(rightKind, out int rightSortOrder))
            {
                return(-1);
            }

            return(leftSortOrder < rightSortOrder ? -1 : 1);
        }
 public override int Compare(CSharpSyntaxNodeData leftData, CSharpSyntaxNodeData rightData)
 {
     if (leftData.Access == rightData.Access)
     {
         return(0);
     }
     return(SortConfig.AccessModifierSortOrder[leftData.Access] < SortConfig.AccessModifierSortOrder[rightData.Access] ? -1 : 1);
 }
        public override int Compare(CSharpSyntaxNodeData leftData, CSharpSyntaxNodeData rightData)
        {
            if (leftData.NumberOfMethodArguments < rightData.NumberOfMethodArguments)
            {
                return(-1);
            }
            if (leftData.NumberOfMethodArguments > rightData.NumberOfMethodArguments)
            {
                return(1);
            }

            for (int argumentIndex = 0; argumentIndex < leftData.NumberOfMethodArguments; argumentIndex++)
            {
                ParameterSyntax leftArg  = leftData.MethodArguments[argumentIndex];
                ParameterSyntax rightArg = rightData.MethodArguments[argumentIndex];

                TypeSyntax leftType  = leftArg.Type;
                TypeSyntax rightType = rightArg.Type;

                int predefinedCompareResult = ComparePredefinedArgument(leftType, rightType);
                if (predefinedCompareResult != 0)
                {
                    return(predefinedCompareResult);
                }

                int attributeCompareResult = CompareAttributedArgument(leftArg, rightArg);
                if (attributeCompareResult != 0)
                {
                    return(attributeCompareResult);
                }

                int modifierCompareResult = CompareModifierOnArgument(leftArg, rightArg);
                if (modifierCompareResult != 0)
                {
                    return(modifierCompareResult);
                }

                int arrayCompareResult = CompareArrayArgument(leftType, rightType);
                if (arrayCompareResult != 0)
                {
                    return(arrayCompareResult);
                }

                int genericCompareResult = CompareGenericArgument(leftType, rightType);
                if (genericCompareResult != 0)
                {
                    return(genericCompareResult);
                }
            }

            int argumentTypeNameCompareResult = CompareArgumentTypeNames(leftData, rightData);

            return(argumentTypeNameCompareResult);
        }
        private static int CompareArgumentTypeNames(CSharpSyntaxNodeData leftData, CSharpSyntaxNodeData rightData)
        {
            for (int argumentIndex = 0; argumentIndex < leftData.NumberOfMethodArguments; argumentIndex++)
            {
                ParameterSyntax leftArg  = leftData.MethodArguments[argumentIndex];
                ParameterSyntax rightArg = rightData.MethodArguments[argumentIndex];

                string leftTypeName  = leftArg.Type.ToString();
                string rightTypeName = rightArg.Type.ToString();
                int    comparison    = leftTypeName.CompareTo(rightTypeName);
                if (comparison != 0)
                {
                    return(comparison);
                }
            }
            return(0);
        }
        private static int SortOperatorDeclaration(CSharpSyntaxNodeData leftData, CSharpSyntaxNodeData rightData)
        {
            if (!OperatorSortOrder.TryGetValue(leftData.Identifier, out int leftSortOrder))
            {
                leftSortOrder = 100;
            }
            if (!OperatorSortOrder.TryGetValue(rightData.Identifier, out int rightSortOrder))
            {
                rightSortOrder = 100;
            }

            if (leftSortOrder == rightSortOrder)
            {
                int identifierComparison = string.Compare(leftData.Identifier, rightData.Identifier);
                return(identifierComparison);
            }

            return(leftSortOrder < rightSortOrder ? -1 : 1);
        }
        public override int Compare(CSharpSyntaxNodeData leftData, CSharpSyntaxNodeData rightData)
        {
            int identifierComparison = string.Compare(leftData.Identifier, rightData.Identifier);

            return(identifierComparison);
        }
 public override int Compare(CSharpSyntaxNodeData leftData, CSharpSyntaxNodeData rightData)
 => CompareBool(leftData.IsStatic, rightData.IsStatic);
 public override int Compare(CSharpSyntaxNodeData leftData, CSharpSyntaxNodeData rightData)
 => CompareBool(leftData.IsReadonly, rightData.IsReadonly);
 public override int Compare(CSharpSyntaxNodeData leftData, CSharpSyntaxNodeData rightData)
 => CompareBool(leftData.IsConst, rightData.IsConst);
 public override int Compare(CSharpSyntaxNodeData leftData, CSharpSyntaxNodeData rightData)
 => CompareBool(leftData.IsExtern, rightData.IsExtern);