using Enigmos.Modules.SubModules; using Nocturnis.Enigmos.Modules; using Nocturnis.Enigmos.Ports; namespace Enigmos.Modules; public abstract partial class CompositeModule : BaseModule, ICompositeModule { public IBaseModule[] SubModules => GetChildren().OfType().ToArray(); public override IEnumerable Ports { get { IEnumerable res = base.Ports; foreach (IBaseModule bm in SubModules) res = res.Union(bm.Ports); return res; } } protected T GetModule(string path) where T : SubModule { T res = GetNode(path); res.Init(); res.ParentModule = this; res.Board = Board; return res; } protected T[] GetModules() where T : SubModule { T[] res = SubModules.OfType().OrderBy(x => x.Name).ToArray(); foreach (T m in res) { m.Init(); m.ParentModule = this; m.Board = Board; } return res; } }