implement | (parallel) operator in StatusApi.csproj
This commit is contained in:
parent
2070fce4ec
commit
f1003c2877
|
@ -4,6 +4,7 @@
|
|||
<s:Boolean x:Key="/Default/CodeEditing/SuppressNullableWarningFix/Enabled/@EntryValue">False</s:Boolean>
|
||||
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=AMPT/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=arctan/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=backfill/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=beaglebone/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=CCGX/@EntryIndexedValue">True</s:Boolean>
|
||||
|
|
|
@ -1,7 +1,14 @@
|
|||
using InnovEnergy.Lib.StatusApi.Connections;
|
||||
using InnovEnergy.Lib.StatusApi.Generator;
|
||||
using InnovEnergy.Lib.Units.Composite;
|
||||
|
||||
namespace InnovEnergy.Lib.StatusApi;
|
||||
|
||||
public abstract record BatteryStatus(DcPhase Dc) : DeviceStatus, IDcConnection;
|
||||
using T = BatteryStatus;
|
||||
|
||||
[OpParallel]
|
||||
public partial record BatteryStatus : DeviceStatus, IDcConnection
|
||||
{
|
||||
public required DcPhase Dc { get; init; }
|
||||
}
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
#nullable enable // Auto-generated code requires an explicit '#nullable' directive in source.
|
||||
using System.CodeDom.Compiler;
|
||||
using InnovEnergy.Lib.Units.Composite;
|
||||
using InnovEnergy.Lib.Utils;
|
||||
|
||||
namespace InnovEnergy.Lib.StatusApi;
|
||||
|
||||
using T = BatteryStatus;
|
||||
|
||||
[GeneratedCode("generate.sh", "1")]
|
||||
public partial record BatteryStatus
|
||||
{
|
||||
private static readonly Func<T, T, T> OpParallel = "|".CreateBinaryOpForProps<T>();
|
||||
public static T operator |(T left, T right) => OpParallel(left, right);
|
||||
}
|
||||
|
|
@ -4,5 +4,5 @@ namespace InnovEnergy.Lib.StatusApi.Connections;
|
|||
|
||||
public interface IAc3Connection
|
||||
{
|
||||
Ac1Phase Ac3 { get; }
|
||||
Ac3Phase Ac { get; }
|
||||
}
|
|
@ -1,8 +1,14 @@
|
|||
using InnovEnergy.Lib.StatusApi.Generator;
|
||||
using InnovEnergy.Lib.Units.Composite;
|
||||
|
||||
namespace InnovEnergy.Lib.StatusApi;
|
||||
|
||||
public abstract record DcDcConverterStatus(DcPhase Left, DcPhase Right) : DeviceStatus;
|
||||
[OpParallel]
|
||||
public partial record DcDcConverterStatus : DeviceStatus
|
||||
{
|
||||
public required DcPhase Left { get; init; }
|
||||
public required DcPhase Right { get; init; }
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
#nullable enable // Auto-generated code requires an explicit '#nullable' directive in source.
|
||||
using System.CodeDom.Compiler;
|
||||
using InnovEnergy.Lib.Units.Composite;
|
||||
using InnovEnergy.Lib.Utils;
|
||||
|
||||
namespace InnovEnergy.Lib.StatusApi;
|
||||
|
||||
using T = DcDcConverterStatus;
|
||||
|
||||
[GeneratedCode("generate.sh", "1")]
|
||||
public partial record DcDcConverterStatus
|
||||
{
|
||||
private static readonly Func<T, T, T> OpParallel = "|".CreateBinaryOpForProps<T>();
|
||||
public static T operator |(T left, T right) => OpParallel(left, right);
|
||||
}
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
namespace InnovEnergy.Lib.StatusApi.Generator;
|
||||
|
||||
[AttributeUsage(AttributeTargets.Class)]
|
||||
internal class OpParallelAttribute : Attribute
|
||||
{}
|
|
@ -0,0 +1,16 @@
|
|||
#nullable enable // Auto-generated code requires an explicit '#nullable' directive in source.
|
||||
using System.CodeDom.Compiler;
|
||||
using InnovEnergy.Lib.Units.Composite;
|
||||
using InnovEnergy.Lib.Utils;
|
||||
|
||||
namespace InnovEnergy.Lib.StatusApi;
|
||||
|
||||
using T = Template;
|
||||
|
||||
[GeneratedCode("generate.sh", "1")]
|
||||
public partial record Template
|
||||
{
|
||||
private static readonly Func<T, T, T> OpParallel = "|".CreateBinaryOpForProps<T>();
|
||||
public static T operator |(T left, T right) => OpParallel(left, right);
|
||||
}
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
|
||||
scriptDir=$( dirname -- "$0"; )
|
||||
cd "$scriptDir/.." || exit
|
||||
|
||||
for path in $(grep -e '\[OpParallel\]' -l *.cs)
|
||||
do
|
||||
file=$(basename -- "$path")
|
||||
class="${file%.*}"
|
||||
echo "generating $file"
|
||||
sed "s/Template/$class/g" "./Generator/Template.txt" > "./$class.generated.cs"
|
||||
done
|
|
@ -1,8 +1,14 @@
|
|||
using InnovEnergy.Lib.StatusApi.Connections;
|
||||
using InnovEnergy.Lib.StatusApi.Generator;
|
||||
using InnovEnergy.Lib.Units.Composite;
|
||||
|
||||
namespace InnovEnergy.Lib.StatusApi;
|
||||
|
||||
public record MpptStatus(DcPhase Dc, IReadOnlyList<DcPhase> Strings) : IDcConnection, IPvConnection;
|
||||
[OpParallel]
|
||||
public partial record MpptStatus : IDcConnection, IPvConnection
|
||||
{
|
||||
public required DcPhase Dc { get; init; }
|
||||
public required IReadOnlyList<DcPhase> Strings { get; init; }
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
#nullable enable // Auto-generated code requires an explicit '#nullable' directive in source.
|
||||
using System.CodeDom.Compiler;
|
||||
using InnovEnergy.Lib.Units.Composite;
|
||||
using InnovEnergy.Lib.Utils;
|
||||
|
||||
namespace InnovEnergy.Lib.StatusApi;
|
||||
|
||||
using T = MpptStatus;
|
||||
|
||||
[GeneratedCode("generate.sh", "1")]
|
||||
public partial record MpptStatus
|
||||
{
|
||||
private static readonly Func<T, T, T> OpParallel = "|".CreateBinaryOpForProps<T>();
|
||||
public static T operator |(T left, T right) => OpParallel(left, right);
|
||||
}
|
||||
|
|
@ -1,6 +1,11 @@
|
|||
using InnovEnergy.Lib.StatusApi.Connections;
|
||||
using InnovEnergy.Lib.StatusApi.Generator;
|
||||
using InnovEnergy.Lib.Units.Composite;
|
||||
|
||||
namespace InnovEnergy.Lib.StatusApi;
|
||||
|
||||
public abstract record PowerMeterStatus(Ac1Phase Ac3) : DeviceStatus, IAc3Connection;
|
||||
[OpParallel]
|
||||
public partial record PowerMeterStatus : DeviceStatus, IAc3Connection
|
||||
{
|
||||
public required Ac3Phase Ac { get; init; }
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
#nullable enable // Auto-generated code requires an explicit '#nullable' directive in source.
|
||||
using System.CodeDom.Compiler;
|
||||
using InnovEnergy.Lib.Units.Composite;
|
||||
using InnovEnergy.Lib.Utils;
|
||||
|
||||
namespace InnovEnergy.Lib.StatusApi;
|
||||
|
||||
using T = PowerMeterStatus;
|
||||
|
||||
[GeneratedCode("generate.sh", "1")]
|
||||
public partial record PowerMeterStatus
|
||||
{
|
||||
private static readonly Func<T, T, T> OpParallel = "|".CreateBinaryOpForProps<T>();
|
||||
public static T operator |(T left, T right) => OpParallel(left, right);
|
||||
}
|
||||
|
|
@ -1,9 +1,15 @@
|
|||
using InnovEnergy.Lib.StatusApi.Connections;
|
||||
using InnovEnergy.Lib.StatusApi.Generator;
|
||||
using InnovEnergy.Lib.Units.Composite;
|
||||
|
||||
namespace InnovEnergy.Lib.StatusApi;
|
||||
|
||||
public abstract record SinglePhaseInverterStatus(Ac1Phase Ac, DcPhase Dc) :
|
||||
[OpParallel]
|
||||
public partial record SinglePhaseInverterStatus :
|
||||
DeviceStatus,
|
||||
IAc1Connection,
|
||||
IDcConnection;
|
||||
IDcConnection
|
||||
{
|
||||
public required Ac1Phase Ac { get; init; }
|
||||
public required DcPhase Dc { get; init; }
|
||||
}
|
||||
|
|
|
@ -0,0 +1,16 @@
|
|||
#nullable enable // Auto-generated code requires an explicit '#nullable' directive in source.
|
||||
using System.CodeDom.Compiler;
|
||||
using InnovEnergy.Lib.Units.Composite;
|
||||
using InnovEnergy.Lib.Utils;
|
||||
|
||||
namespace InnovEnergy.Lib.StatusApi;
|
||||
|
||||
using T = SinglePhaseInverterStatus;
|
||||
|
||||
[GeneratedCode("generate.sh", "1")]
|
||||
public partial record SinglePhaseInverterStatus
|
||||
{
|
||||
private static readonly Func<T, T, T> OpParallel = "|".CreateBinaryOpForProps<T>();
|
||||
public static T operator |(T left, T right) => OpParallel(left, right);
|
||||
}
|
||||
|
|
@ -1,9 +1,15 @@
|
|||
using InnovEnergy.Lib.StatusApi.Connections;
|
||||
using InnovEnergy.Lib.StatusApi.Generator;
|
||||
using InnovEnergy.Lib.Units.Composite;
|
||||
|
||||
namespace InnovEnergy.Lib.StatusApi;
|
||||
|
||||
public abstract record SinglePhasePvInverterStatus(Ac1Phase Ac, IReadOnlyList<DcPhase> Strings) :
|
||||
[OpParallel]
|
||||
public partial record SinglePhasePvInverterStatus :
|
||||
DeviceStatus,
|
||||
IAc1Connection,
|
||||
IPvConnection;
|
||||
IPvConnection
|
||||
{
|
||||
public required Ac1Phase Ac { get; init; }
|
||||
public required IReadOnlyList<DcPhase> Strings { get; init; }
|
||||
}
|
||||
|
|
|
@ -0,0 +1,16 @@
|
|||
#nullable enable // Auto-generated code requires an explicit '#nullable' directive in source.
|
||||
using System.CodeDom.Compiler;
|
||||
using InnovEnergy.Lib.Units.Composite;
|
||||
using InnovEnergy.Lib.Utils;
|
||||
|
||||
namespace InnovEnergy.Lib.StatusApi;
|
||||
|
||||
using T = SinglePhasePvInverterStatus;
|
||||
|
||||
[GeneratedCode("generate.sh", "1")]
|
||||
public partial record SinglePhasePvInverterStatus
|
||||
{
|
||||
private static readonly Func<T, T, T> OpParallel = "|".CreateBinaryOpForProps<T>();
|
||||
public static T operator |(T left, T right) => OpParallel(left, right);
|
||||
}
|
||||
|
|
@ -3,9 +3,13 @@
|
|||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="../Protocols/Modbus/Modbus.csproj" />
|
||||
<ProjectReference Include="..\Units\Units.csproj" />
|
||||
<ProjectReference Include="../Units/Units.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
<Target Name="PreBuild" BeforeTargets="PreBuildEvent">
|
||||
<Exec Command="./Generator/generate.sh" />
|
||||
</Target>
|
||||
|
||||
</Project>
|
||||
|
||||
|
||||
|
|
|
@ -1,10 +1,16 @@
|
|||
using InnovEnergy.Lib.StatusApi.Connections;
|
||||
using InnovEnergy.Lib.StatusApi.Generator;
|
||||
using InnovEnergy.Lib.Units.Composite;
|
||||
|
||||
namespace InnovEnergy.Lib.StatusApi;
|
||||
|
||||
public abstract record ThreePhaseInverterStatus(Ac1Phase Ac3, DcPhase Dc) :
|
||||
[OpParallel]
|
||||
public partial record ThreePhaseInverterStatus :
|
||||
DeviceStatus,
|
||||
IAc3Connection,
|
||||
IDcConnection;
|
||||
IDcConnection
|
||||
{
|
||||
public required Ac3Phase Ac { get; init; }
|
||||
public required DcPhase Dc { get; init; }
|
||||
}
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
#nullable enable // Auto-generated code requires an explicit '#nullable' directive in source.
|
||||
using System.CodeDom.Compiler;
|
||||
using InnovEnergy.Lib.Units.Composite;
|
||||
using InnovEnergy.Lib.Utils;
|
||||
|
||||
namespace InnovEnergy.Lib.StatusApi;
|
||||
|
||||
using T = ThreePhaseInverterStatus;
|
||||
|
||||
[GeneratedCode("generate.sh", "1")]
|
||||
public partial record ThreePhaseInverterStatus
|
||||
{
|
||||
private static readonly Func<T, T, T> OpParallel = "|".CreateBinaryOpForProps<T>();
|
||||
public static T operator |(T left, T right) => OpParallel(left, right);
|
||||
}
|
||||
|
|
@ -1,9 +1,15 @@
|
|||
using InnovEnergy.Lib.StatusApi.Connections;
|
||||
using InnovEnergy.Lib.StatusApi.Generator;
|
||||
using InnovEnergy.Lib.Units.Composite;
|
||||
|
||||
namespace InnovEnergy.Lib.StatusApi;
|
||||
|
||||
public abstract record ThreePhasePvInverterStatus(Ac1Phase Ac3, IReadOnlyList<DcPhase> Strings) :
|
||||
[OpParallel]
|
||||
public partial record ThreePhasePvInverterStatus :
|
||||
DeviceStatus,
|
||||
IAc3Connection,
|
||||
IPvConnection;
|
||||
IPvConnection
|
||||
{
|
||||
public required Ac3Phase Ac { get; init; }
|
||||
public required IReadOnlyList<DcPhase> Strings { get; init; }
|
||||
}
|
||||
|
|
|
@ -0,0 +1,16 @@
|
|||
#nullable enable // Auto-generated code requires an explicit '#nullable' directive in source.
|
||||
using System.CodeDom.Compiler;
|
||||
using InnovEnergy.Lib.Units.Composite;
|
||||
using InnovEnergy.Lib.Utils;
|
||||
|
||||
namespace InnovEnergy.Lib.StatusApi;
|
||||
|
||||
using T = ThreePhasePvInverterStatus;
|
||||
|
||||
[GeneratedCode("generate.sh", "1")]
|
||||
public partial record ThreePhasePvInverterStatus
|
||||
{
|
||||
private static readonly Func<T, T, T> OpParallel = "|".CreateBinaryOpForProps<T>();
|
||||
public static T operator |(T left, T right) => OpParallel(left, right);
|
||||
}
|
||||
|
|
@ -1,11 +0,0 @@
|
|||
using InnovEnergy.Lib.Utils;
|
||||
|
||||
namespace InnovEnergy.Lib.StatusApi;
|
||||
|
||||
public static class Utils
|
||||
{
|
||||
public static Decimal Round3(this Decimal d)
|
||||
{
|
||||
return d.RoundToSignificantFigures(3);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue