Upgrade structure of code base
This commit is contained in:
@@ -0,0 +1,17 @@
|
||||
using Nocturnis.DataStructures;
|
||||
using Nocturnis.Enigmos.Ports.DataPorts.Directions;
|
||||
using Skeleton.DataStructure;
|
||||
|
||||
namespace Nocturnis.Enigmos.Modules.ComputationalModules;
|
||||
|
||||
public static class EBinaryComputationalModule
|
||||
{
|
||||
public static IData X(this IBinaryComputationalModule p, CacheItem x) => p.DataInPorts[0].GetData.GetFrom(x)!;
|
||||
public static IData Y(this IBinaryComputationalModule p, CacheItem x) => p.DataInPorts[1].GetData.GetFrom(x)!;
|
||||
|
||||
public static void BinaryInit(this IBinaryComputationalModule p)
|
||||
{
|
||||
p.DataInPorts = new IDataInPort[2];
|
||||
p.DataInInit("Input", 2);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
using Nocturnis.Enigmos.Ports.DataPorts.Directions;
|
||||
|
||||
namespace Nocturnis.Enigmos.Modules.ComputationalModules;
|
||||
|
||||
public static class EComputationalModule
|
||||
{
|
||||
public static void DataOutInit(this IComputationalModule a, string prefix, int dI)
|
||||
{
|
||||
a.DataOutPorts = new IDataOutPort[dI];
|
||||
for (int i = 1; i <= dI; i++)
|
||||
a.DataOutPorts[i - 1] = a.GetPort<IDataOutPort>($"{prefix}{i}");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
using Godot;
|
||||
using Nocturnis.Enigmos.Ports.DataPorts.Directions;
|
||||
using Skeleton.DataStructure;
|
||||
|
||||
namespace Nocturnis.Enigmos.Modules.ComputationalModules;
|
||||
|
||||
public static class EDuplicateOutputModule
|
||||
{
|
||||
public static void Define(this IDuplicateOutputModule m, Func<CacheItem, (object, StringName)> define)
|
||||
{
|
||||
foreach (IDataOutPort op in m.DataOutPorts)
|
||||
op.OutData.UpdateCalculation(define);
|
||||
}
|
||||
|
||||
public static void SetOutputType(this IDuplicateOutputModule m, StringName type)
|
||||
{
|
||||
foreach (IDataOutPort op in m.DataOutPorts)
|
||||
op.SetDataType(type);
|
||||
}
|
||||
}
|
||||
15
src/Enigmos/Modules/ComputationalModules/ELogicModule.cs
Normal file
15
src/Enigmos/Modules/ComputationalModules/ELogicModule.cs
Normal file
@@ -0,0 +1,15 @@
|
||||
using Nocturnis.Enigmos.Ports.DataPorts.Directions;
|
||||
using Nocturnis.GlobalManagement.Constants;
|
||||
|
||||
namespace Nocturnis.Enigmos.Modules.ComputationalModules;
|
||||
|
||||
public static class ELogicModule
|
||||
{
|
||||
public static void LogicModuleInit(this ILogicModule lm)
|
||||
{
|
||||
foreach (IDataOutPort op in lm.DataOutPorts)
|
||||
op.SetDataType(EnigmosConstant.DataPortTypes.Bit);
|
||||
foreach (IDataInPort ip in lm.DataInPorts)
|
||||
ip.SetDataType(EnigmosConstant.DataPortTypes.Bit);
|
||||
}
|
||||
}
|
||||
13
src/Enigmos/Modules/ComputationalModules/EOperationModule.cs
Normal file
13
src/Enigmos/Modules/ComputationalModules/EOperationModule.cs
Normal file
@@ -0,0 +1,13 @@
|
||||
using Godot;
|
||||
using Nocturnis.Enigmos.Ports.DataPorts.Directions;
|
||||
|
||||
namespace Nocturnis.Enigmos.Modules.ComputationalModules;
|
||||
|
||||
public static class EOperationModule
|
||||
{
|
||||
public static void SetInputType(this IOperationModule m, StringName type)
|
||||
{
|
||||
foreach (IDataInPort ip in m.DataInPorts)
|
||||
ip.SetDataType(type);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
using Nocturnis.DataStructures;
|
||||
using Skeleton.DataStructure;
|
||||
|
||||
namespace Nocturnis.Enigmos.Modules.ComputationalModules;
|
||||
|
||||
public static class ETernaryComputationalModule
|
||||
{
|
||||
public static IData X(this ITernaryComputationalModule m, CacheItem cache) =>
|
||||
m.DataOutPorts[0].OutData.GetFrom(cache)!;
|
||||
public static IData Y(this ITernaryComputationalModule m, CacheItem cache) =>
|
||||
m.DataOutPorts[1].OutData.GetFrom(cache)!;
|
||||
public static IData Z(this ITernaryComputationalModule m, CacheItem cache) =>
|
||||
m.DataOutPorts[2].OutData.GetFrom(cache)!;
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
using Nocturnis.DataStructures;
|
||||
using Skeleton.DataStructure;
|
||||
|
||||
namespace Nocturnis.Enigmos.Modules.ComputationalModules;
|
||||
|
||||
public static class EUnaryComputationalModule
|
||||
{
|
||||
public static IData X(this IUnaryComputationalModule m, CacheItem cache) =>
|
||||
m.DataOutPorts[0].OutData.GetFrom(cache)!;
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
namespace Nocturnis.Enigmos.Modules.ComputationalModules;
|
||||
|
||||
public interface IBinaryComputationalModule : IComputationalModule, IParameterModule
|
||||
{
|
||||
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
using Nocturnis.Enigmos.Ports.DataPorts.Directions;
|
||||
|
||||
namespace Nocturnis.Enigmos.Modules.ComputationalModules;
|
||||
|
||||
public interface IComputationalModule : IBaseModule
|
||||
{
|
||||
IDataOutPort[] DataOutPorts { get; set; }
|
||||
void Define();
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
namespace Nocturnis.Enigmos.Modules.ComputationalModules;
|
||||
|
||||
public interface IDuplicateOutputModule : IComputationalModule
|
||||
{
|
||||
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
namespace Nocturnis.Enigmos.Modules.ComputationalModules;
|
||||
|
||||
public interface IOperationModule : IParameterModule
|
||||
{
|
||||
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
namespace Nocturnis.Enigmos.Modules.ComputationalModules;
|
||||
|
||||
public interface ITernaryComputationalModule: IParameterModule, IComputationalModule
|
||||
{
|
||||
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
namespace Nocturnis.Enigmos.Modules.ComputationalModules;
|
||||
|
||||
public interface IUnaryComputationalModule: IComputationalModule, IOperationModule
|
||||
{
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user