Upgrade structure of code base

This commit is contained in:
h z
2024-07-03 12:20:08 +08:00
parent d382481cd4
commit 42e06a0d0c
82 changed files with 864 additions and 116 deletions

View File

@@ -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);
}
}

View File

@@ -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}");
}
}

View File

@@ -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);
}
}

View 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);
}
}

View 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);
}
}

View File

@@ -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)!;
}

View File

@@ -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)!;
}

View File

@@ -0,0 +1,6 @@
namespace Nocturnis.Enigmos.Modules.ComputationalModules;
public interface IBinaryComputationalModule : IComputationalModule, IParameterModule
{
}

View File

@@ -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();
}

View File

@@ -0,0 +1,6 @@
namespace Nocturnis.Enigmos.Modules.ComputationalModules;
public interface IDuplicateOutputModule : IComputationalModule
{
}

View File

@@ -0,0 +1,6 @@
namespace Nocturnis.Enigmos.Modules.ComputationalModules;
public interface IOperationModule : IParameterModule
{
}

View File

@@ -0,0 +1,6 @@
namespace Nocturnis.Enigmos.Modules.ComputationalModules;
public interface ITernaryComputationalModule: IParameterModule, IComputationalModule
{
}

View File

@@ -0,0 +1,6 @@
namespace Nocturnis.Enigmos.Modules.ComputationalModules;
public interface IUnaryComputationalModule: IComputationalModule, IOperationModule
{
}