This commit is contained in:
2026-06-01 01:31:31 +07:00
parent ba77411c4a
commit e43c885fbe
7 changed files with 5146 additions and 2238 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -1,4 +1,5 @@
global using PogonMass = QWERTYkez.Mensura.Units.Pogon.PogonMass;
#if DEBUG
global using PogonMass = QWERTYkez.Mensura.Units.Pogon.PogonMass;
global using PogonMassExtensions = QWERTYkez.Mensura.Units.Pogon.PogonMassExtensions;
global using PogonMassConverter = QWERTYkez.Mensura.Units.Pogon.PogonMassConverter;
@@ -20,8 +21,7 @@ namespace QWERTYkez.Mensura.Units
if (len == 0) return [];
var result = new Mass[len];
for (int i = 0; i < len; i++)
result[i] = right * left[i];
PogonMassExtensions.MultiplyCore(left, right, result);
return result;
}
public static Mass[] operator *(PogonMass[] left, Length? right)
@@ -367,7 +367,7 @@ namespace QWERTYkez.Mensura.Units.Pogon
internal static void MultiplyCore(ReadOnlySpan<PogonMass> source, Length value, Span<Mass> destination)
internal static void MultiplyCore(this ReadOnlySpan<PogonMass> source, Length value, Span<Mass> destination)
{
var dVal = value._Value;
int len = source.Length;
@@ -398,7 +398,7 @@ namespace QWERTYkez.Mensura.Units.Pogon
Unsafe.Add(ref dstRef, i) = Unsafe.Add(ref srcRef, i) * dVal;
}
}
internal static void MultiplyCore(ReadOnlySpan<Length> source, PogonMass value, Span<Mass> destination)
internal static void MultiplyCore(this ReadOnlySpan<Length> source, PogonMass value, Span<Mass> destination)
{
var dVal = value._Value;
int len = source.Length;
@@ -431,7 +431,7 @@ namespace QWERTYkez.Mensura.Units.Pogon
}
internal static void DivideCore(ReadOnlySpan<Mass> source, PogonMass divisor, Span<Length> destination)
internal static void DivideCore(this ReadOnlySpan<Mass> source, PogonMass divisor, Span<Length> destination)
{
// 1. Проверка на ноль
if (divisor.IsZero || divisor.IsNaN)
@@ -466,7 +466,7 @@ namespace QWERTYkez.Mensura.Units.Pogon
Unsafe.Add(ref dstRef, i) = Unsafe.Add(ref srcRef, i) / dVal;
}
}
internal static void DivideCore(Mass dividend, ReadOnlySpan<PogonMass> source, Span<Length> destination)
internal static void DivideCore(this Mass dividend, ReadOnlySpan<PogonMass> source, Span<Length> destination)
{
var dVal = dividend._Value;
int len = source.Length;
@@ -565,4 +565,5 @@ namespace QWERTYkez.Mensura.Units.Pogon
return new(double_Value);
}
}
}
}
#endif

View File

@@ -1,4 +1,5 @@
namespace QWERTYkez.Mensura.Units.Pogon;
#if DEBUG
namespace QWERTYkez.Mensura.Units.Pogon;
public readonly partial record struct PogonMass
{
@@ -30,4 +31,5 @@ public readonly partial record struct PogonMass
init => _Value = value._Value / LengthConv.KiloMeters.Multiplicator;
}
}
}
#endif

File diff suppressed because it is too large Load Diff

View File

@@ -1,74 +1,74 @@
//namespace QWERTYkez.Mensura.Units;
#if DEBUG
namespace QWERTYkez.Mensura.Units;
///// <summary>
///// Base value is MilliMeters
///// </summary>
//[UnitOperatorsGenerator, DebuggerDisplay("mm = {_MilliMeters.ToString(\"0.###\")}, m = {Meters.ToString(\"0.###\")}")]
//public readonly partial record struct XXXXXXXXXXXXXX
//{
// public static XXXXXXXXXXXXXX MilliMeter { get; } = new(1);
//#pragma warning disable IDE1006 // _Подчеркивание для обозначения того, что это базовая единица
// [NotMapped, JsonIgnore] public double _MilliMeters { get => _Value; init => _Value = value; }
//#pragma warning restore IDE1006
/// <summary>
/// Base value is MilliMeters
/// </summary>
[DebuggerDisplay("mm = {_MilliMeters.ToString(\"0.###\")}, m = {Meters.ToString(\"0.###\")}")]
public readonly partial record struct XXXXXXXXXXXXXX
{
public static XXXXXXXXXXXXXX MilliMeter { get; } = new(1);
[NotMapped, JsonIgnore] public double _MilliMeters { get => _Value; init => _Value = value; }
// public static XXXXXXXXXXXXXX CentiMeter { get; } = new(XXXXXXXXXXXXXXConv.CentiMeters.To(1));
// [NotMapped, JsonIgnore] public double CentiMeters
// {
// get => XXXXXXXXXXXXXXConv.CentiMeters.From(_Value);
// init
// {
// XXXXXXXXXXXXXX aaa = new();
// XXXXXXXXXXXXXX bbb = new();
public static XXXXXXXXXXXXXX CentiMeter { get; } = new(XXXXXXXXXXXXXXConv.CentiMeters.To(1));
[NotMapped, JsonIgnore] public double CentiMeters
{
get => XXXXXXXXXXXXXXConv.CentiMeters.From(_Value);
init
{
XXXXXXXXXXXXXX aaa = new();
XXXXXXXXXXXXXX bbb = new();
// if (aaa != bbb || aaa == bbb)
// {
if (aaa != bbb || aaa == bbb)
{
// }
}
// _Value = XXXXXXXXXXXXXXConv.CentiMeters.To(value);
// }
// }
_Value = XXXXXXXXXXXXXXConv.CentiMeters.To(value);
}
}
// public static XXXXXXXXXXXXXX DeciMeter { get; } = new(XXXXXXXXXXXXXXConv.DeciMeters.To(1));
// [NotMapped, JsonIgnore] public double DeciMeters
// {
// get => XXXXXXXXXXXXXXConv.DeciMeters.From(_Value);
// init => _Value = XXXXXXXXXXXXXXConv.DeciMeters.To(value);
// }
public static XXXXXXXXXXXXXX DeciMeter { get; } = new(XXXXXXXXXXXXXXConv.DeciMeters.To(1));
[NotMapped, JsonIgnore] public double DeciMeters
{
get => XXXXXXXXXXXXXXConv.DeciMeters.From(_Value);
init => _Value = XXXXXXXXXXXXXXConv.DeciMeters.To(value);
}
// public static XXXXXXXXXXXXXX Meter { get; } = new(XXXXXXXXXXXXXXConv.Meters.To(1));
// [NotMapped, JsonIgnore] public double Meters
// {
// get => XXXXXXXXXXXXXXConv.Meters.From(_Value);
// init => _Value = XXXXXXXXXXXXXXConv.Meters.To(value);
// }
public static XXXXXXXXXXXXXX Meter { get; } = new(XXXXXXXXXXXXXXConv.Meters.To(1));
[NotMapped, JsonIgnore] public double Meters
{
get => XXXXXXXXXXXXXXConv.Meters.From(_Value);
init => _Value = XXXXXXXXXXXXXXConv.Meters.To(value);
}
// public static XXXXXXXXXXXXXX KiloMeter { get; } = new(XXXXXXXXXXXXXXConv.KiloMeters.To(1));
// [NotMapped, JsonIgnore] public double KiloMeters
// {
// get => XXXXXXXXXXXXXXConv.KiloMeters.From(_Value);
// init => _Value = XXXXXXXXXXXXXXConv.KiloMeters.To(value);
// }
public static XXXXXXXXXXXXXX KiloMeter { get; } = new(XXXXXXXXXXXXXXConv.KiloMeters.To(1));
[NotMapped, JsonIgnore] public double KiloMeters
{
get => XXXXXXXXXXXXXXConv.KiloMeters.From(_Value);
init => _Value = XXXXXXXXXXXXXXConv.KiloMeters.To(value);
}
// public XXXXXXXXXXXXXX AddMilliMeters(double value) => new(_Value + value);
// public XXXXXXXXXXXXXX AddCentiMeters(double value) => new(_Value + XXXXXXXXXXXXXXConv.CentiMeters.To(value));
// public XXXXXXXXXXXXXX AddDeciMeters(double value) => new(_Value + XXXXXXXXXXXXXXConv.DeciMeters.To(value));
// public XXXXXXXXXXXXXX AddMeters(double value) => new(_Value + XXXXXXXXXXXXXXConv.Meters.To(value));
// public XXXXXXXXXXXXXX AddKiloMeters(double value) => new(_Value + XXXXXXXXXXXXXXConv.KiloMeters.To(value));
//}
public XXXXXXXXXXXXXX AddMilliMeters(double value) => new(_Value + value);
public XXXXXXXXXXXXXX AddCentiMeters(double value) => new(_Value + XXXXXXXXXXXXXXConv.CentiMeters.To(value));
public XXXXXXXXXXXXXX AddDeciMeters(double value) => new(_Value + XXXXXXXXXXXXXXConv.DeciMeters.To(value));
public XXXXXXXXXXXXXX AddMeters(double value) => new(_Value + XXXXXXXXXXXXXXConv.Meters.To(value));
public XXXXXXXXXXXXXX AddKiloMeters(double value) => new(_Value + XXXXXXXXXXXXXXConv.KiloMeters.To(value));
}
//internal readonly struct XXXXXXXXXXXXXXConv
//{
// private XXXXXXXXXXXXXXConv(double multiplicator) => this.Multiplicator = multiplicator;
// public double To(double value) => value * Multiplicator;
// public double From(double value) => value / Multiplicator;
// public double Multiplicator { get; init; }
// public static XXXXXXXXXXXXXXConv MilliMeters { get; } = new(1);
// public static XXXXXXXXXXXXXXConv CentiMeters { get; } = new(10);
// public static XXXXXXXXXXXXXXConv DeciMeters { get; } = new(100);
// public static XXXXXXXXXXXXXXConv Meters { get; } = new(1000);
// public static XXXXXXXXXXXXXXConv KiloMeters { get; } = new(1000000);
//}
internal readonly struct XXXXXXXXXXXXXXConv
{
private XXXXXXXXXXXXXXConv(double multiplicator) => this.Multiplicator = multiplicator;
public double To(double value) => value * Multiplicator;
public double From(double value) => value / Multiplicator;
public double Multiplicator { get; init; }
public static XXXXXXXXXXXXXXConv MilliMeters { get; } = new(1);
public static XXXXXXXXXXXXXXConv CentiMeters { get; } = new(10);
public static XXXXXXXXXXXXXXConv DeciMeters { get; } = new(100);
public static XXXXXXXXXXXXXXConv Meters { get; } = new(1000);
public static XXXXXXXXXXXXXXConv KiloMeters { get; } = new(1000000);
}
#endif