aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.Horizon.Kernel.Generators/Kernel/SyscallGenerator.cs
diff options
context:
space:
mode:
authorACGNnsj <ootopoo@vip.qq.com>2023-03-28 20:59:43 +0800
committerGitHub <noreply@github.com>2023-03-28 14:59:43 +0200
commit460f96967de6f5cb729ed57baaa4dad2178c8cb6 (patch)
tree9cb4ef2daa0e712d3b449572ab018e9fdab74179 /Ryujinx.Horizon.Kernel.Generators/Kernel/SyscallGenerator.cs
parent7ca779a26d76a3ad1edd94ba6c1cfd7466d73314 (diff)
Slight Code Refactoring (#4373)
* Simplify return statements by using ternary expressions * Remove a redundant type conversion * Reduce nesting by inverting "if" statements * Try to improve code readability by using LINQ and inverting "if" statements * Try to improve code readability by using LINQ, using ternary expressions, and inverting "if" statements * Add line breaks to long LINQ * Add line breaks to long LINQ
Diffstat (limited to 'Ryujinx.Horizon.Kernel.Generators/Kernel/SyscallGenerator.cs')
-rw-r--r--Ryujinx.Horizon.Kernel.Generators/Kernel/SyscallGenerator.cs48
1 files changed, 13 insertions, 35 deletions
diff --git a/Ryujinx.Horizon.Kernel.Generators/Kernel/SyscallGenerator.cs b/Ryujinx.Horizon.Kernel.Generators/Kernel/SyscallGenerator.cs
index 8bc0800c..51da2187 100644
--- a/Ryujinx.Horizon.Kernel.Generators/Kernel/SyscallGenerator.cs
+++ b/Ryujinx.Horizon.Kernel.Generators/Kernel/SyscallGenerator.cs
@@ -4,6 +4,7 @@ using Microsoft.CodeAnalysis.CSharp.Syntax;
using System;
using System.Collections.Generic;
using System.Diagnostics;
+using System.Linq;
namespace Ryujinx.Horizon.Generators.Kernel
{
@@ -151,24 +152,15 @@ namespace Ryujinx.Horizon.Generators.Kernel
GenerateMethod32(generator, context.Compilation, method);
GenerateMethod64(generator, context.Compilation, method);
- foreach (var attributeList in method.AttributeLists)
+ foreach (AttributeSyntax attribute in method.AttributeLists.SelectMany(attributeList =>
+ attributeList.Attributes.Where(attribute =>
+ GetCanonicalTypeName(context.Compilation, attribute) == TypeSvcAttribute)))
{
- foreach (var attribute in attributeList.Attributes)
- {
- if (GetCanonicalTypeName(context.Compilation, attribute) != TypeSvcAttribute)
- {
- continue;
- }
-
- foreach (var attributeArg in attribute.ArgumentList.Arguments)
- {
- if (attributeArg.Expression.Kind() == SyntaxKind.NumericLiteralExpression)
- {
- LiteralExpressionSyntax numericLiteral = (LiteralExpressionSyntax)attributeArg.Expression;
- syscalls.Add(new SyscallIdAndName((int)numericLiteral.Token.Value, method.Identifier.Text));
- }
- }
- }
+ syscalls.AddRange(from attributeArg in attribute.ArgumentList.Arguments
+ where attributeArg.Expression.Kind() == SyntaxKind.NumericLiteralExpression
+ select (LiteralExpressionSyntax)attributeArg.Expression
+ into numericLiteral
+ select new SyscallIdAndName((int)numericLiteral.Token.Value, method.Identifier.Text));
}
}
@@ -510,28 +502,14 @@ namespace Ryujinx.Horizon.Generators.Kernel
private static string GenerateCastFromUInt64(string value, string canonicalTargetTypeName, string targetTypeName)
{
- if (canonicalTargetTypeName == TypeSystemBoolean)
- {
- return $"({value} & 1) != 0";
- }
-
- return $"({targetTypeName}){value}";
+ return canonicalTargetTypeName == TypeSystemBoolean ? $"({value} & 1) != 0" : $"({targetTypeName}){value}";
}
private static bool IsPointerSized(Compilation compilation, ParameterSyntax parameterSyntax)
{
- foreach (var attributeList in parameterSyntax.AttributeLists)
- {
- foreach (var attribute in attributeList.Attributes)
- {
- if (GetCanonicalTypeName(compilation, attribute) == TypePointerSizedAttribute)
- {
- return true;
- }
- }
- }
-
- return false;
+ return parameterSyntax.AttributeLists.Any(attributeList =>
+ attributeList.Attributes.Any(attribute =>
+ GetCanonicalTypeName(compilation, attribute) == TypePointerSizedAttribute));
}
public void Initialize(GeneratorInitializationContext context)