using System; using System.Collections.Generic; using Robust.Shared.GameObjects; using Robust.Shared.IoC; using Robust.Shared.Reflection; using Robust.Shared.Utility; namespace Robust.Server.Bql { public partial class BqlQueryManager : IBqlQueryManager { private readonly IReflectionManager _reflectionManager; private readonly IComponentFactory _componentFactory; private readonly List _instances = new(); private readonly Dictionary _queriesByToken = new(); public BqlQueryManager() { _reflectionManager = IoCManager.Resolve(); _componentFactory = IoCManager.Resolve(); } /// /// Automatically registers all query selectors with the parser/executor. /// public void DoAutoRegistrations() { foreach (var type in _reflectionManager.FindTypesWithAttribute()) { RegisterClass(type); } DoParserSetup(); } /// /// Internally registers the given . /// /// The selector to register private void RegisterClass(Type bqlQuerySelector) { DebugTools.Assert(bqlQuerySelector.BaseType == typeof(BqlQuerySelector)); var inst = (BqlQuerySelector)Activator.CreateInstance(bqlQuerySelector)!; _instances.Add(inst); _queriesByToken.Add(inst.Token, inst); } } }