42 lines
1.0 KiB
C#
42 lines
1.0 KiB
C#
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<IBaseModule>().ToArray();
|
|
|
|
public override IEnumerable<IBasePort> Ports
|
|
{
|
|
get
|
|
{
|
|
IEnumerable<IBasePort> res = base.Ports;
|
|
foreach (IBaseModule bm in SubModules)
|
|
res = res.Union(bm.Ports);
|
|
return res;
|
|
}
|
|
}
|
|
protected T GetModule<T>(string path) where T : SubModule
|
|
{
|
|
T res = GetNode<T>(path);
|
|
res.Init();
|
|
res.ParentModule = this;
|
|
res.Board = Board;
|
|
return res;
|
|
}
|
|
|
|
protected T[] GetModules<T>() where T : SubModule
|
|
{
|
|
T[] res = SubModules.OfType<T>().OrderBy(x => x.Name).ToArray();
|
|
foreach (T m in res)
|
|
{
|
|
m.Init();
|
|
m.ParentModule = this;
|
|
m.Board = Board;
|
|
}
|
|
return res;
|
|
}
|
|
}
|