Restructure solution layout by module

This commit is contained in:
master
2025-10-28 15:10:40 +02:00
parent 95daa159c4
commit d870da18ce
4103 changed files with 192899 additions and 187024 deletions

View File

@@ -0,0 +1,45 @@
using System;
using System.Collections.Generic;
namespace StellaOps.Signals.Parsing;
/// <summary>
/// Resolves callgraph parsers for specific languages.
/// </summary>
public interface ICallgraphParserResolver
{
/// <summary>
/// Resolves a parser for the supplied language.
/// </summary>
ICallgraphParser Resolve(string language);
}
internal sealed class CallgraphParserResolver : ICallgraphParserResolver
{
private readonly IReadOnlyDictionary<string, ICallgraphParser> parsersByLanguage;
public CallgraphParserResolver(IEnumerable<ICallgraphParser> parsers)
{
ArgumentNullException.ThrowIfNull(parsers);
var map = new Dictionary<string, ICallgraphParser>(StringComparer.OrdinalIgnoreCase);
foreach (var parser in parsers)
{
map[parser.Language] = parser;
}
parsersByLanguage = map;
}
public ICallgraphParser Resolve(string language)
{
ArgumentException.ThrowIfNullOrWhiteSpace(language);
if (parsersByLanguage.TryGetValue(language, out var parser))
{
return parser;
}
throw new CallgraphParserNotFoundException(language);
}
}