source generator
This commit is contained in:
41
Modules/CompositeModule.cs
Normal file
41
Modules/CompositeModule.cs
Normal file
@@ -0,0 +1,41 @@
|
||||
using Enigmos.Modules.SubModules;
|
||||
using Nocturnis.Enigmos.Modules;
|
||||
using Nocturnis.Enigmos.Ports;
|
||||
|
||||
namespace Enigmos.Modules;
|
||||
|
||||
public 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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user