52 lines
1.8 KiB
C#
52 lines
1.8 KiB
C#
// Copyright (c) StellaOps. All rights reserved.
|
|
// Licensed under AGPL-3.0-or-later. See LICENSE in the project root.
|
|
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
using StellaOps.BinaryIndex.Normalization.Arm64;
|
|
using StellaOps.BinaryIndex.Normalization.X64;
|
|
|
|
namespace StellaOps.BinaryIndex.Normalization;
|
|
|
|
/// <summary>
|
|
/// Extension methods for registering normalization services.
|
|
/// </summary>
|
|
public static class ServiceCollectionExtensions
|
|
{
|
|
/// <summary>
|
|
/// Adds normalization pipeline services to the service collection.
|
|
/// </summary>
|
|
/// <param name="services">The service collection.</param>
|
|
/// <returns>The service collection for chaining.</returns>
|
|
public static IServiceCollection AddNormalizationPipelines(this IServiceCollection services)
|
|
{
|
|
// Register individual pipelines
|
|
services.AddSingleton<INormalizationPipeline, X64NormalizationPipeline>();
|
|
services.AddSingleton<INormalizationPipeline, Arm64NormalizationPipeline>();
|
|
|
|
// Register the service that manages pipelines
|
|
services.AddSingleton<NormalizationService>();
|
|
|
|
return services;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Adds only x86/x64 normalization pipeline.
|
|
/// </summary>
|
|
public static IServiceCollection AddX64Normalization(this IServiceCollection services)
|
|
{
|
|
services.AddSingleton<INormalizationPipeline, X64NormalizationPipeline>();
|
|
services.AddSingleton<NormalizationService>();
|
|
return services;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Adds only ARM64 normalization pipeline.
|
|
/// </summary>
|
|
public static IServiceCollection AddArm64Normalization(this IServiceCollection services)
|
|
{
|
|
services.AddSingleton<INormalizationPipeline, Arm64NormalizationPipeline>();
|
|
services.AddSingleton<NormalizationService>();
|
|
return services;
|
|
}
|
|
}
|