This commit is contained in:
melekhin
2026-06-03 12:07:27 +07:00
parent 69f529c4fc
commit c27c2e0085
19 changed files with 2002 additions and 1713 deletions

View File

@@ -91,7 +91,9 @@ namespace QWERTYkez.Mensura
// Вы должны скопировать сюда всё содержимое вашего второго файла,
// заменив {typeName} на {typeName}.
string skeleton = @"
global using {typeName}Extensions = QWERTYkez.Mensura.Units.{typeName}Extensions;
global using {typeName} = QWERTYkez.Mensura.Units.{typeName};
using System.Runtime.Serialization;
namespace QWERTYkez.Mensura.Units;
@@ -131,14 +133,13 @@ public readonly partial record struct {typeName} : IMensuraUnit<{typeName}>, IEq
public static {typeName} NegativeInfinity { get; } = new(double.NegativeInfinity);
public static {typeName} PositiveInfinity { get; } = new(double.PositiveInfinity);
public static bool operator ==({typeName}? T1, {typeName}? T2) => T1.Protected() == T2.Protected();
public static bool operator !=({typeName}? T1, {typeName}? T2) => T1.Protected() != T2.Protected();
public static bool operator ==({typeName}? T1, {typeName}? T2) => (T1 is null ? 0d : T1.Value._Value) == (T2 is null ? 0d : T2.Value._Value);
public static bool operator !=({typeName}? T1, {typeName}? T2) => (T1 is null ? 0d : T1.Value._Value) != (T2 is null ? 0d : T2.Value._Value);
public static bool operator <({typeName}? T1, {typeName}? T2) => (T1 is null ? 0d : T1.Value._Value) < (T2 is null ? 0d : T2.Value._Value);
public static bool operator <=({typeName}? T1, {typeName}? T2) => (T1 is null ? 0d : T1.Value._Value) <= (T2 is null ? 0d : T2.Value._Value);
public static bool operator >({typeName}? T1, {typeName}? T2) => (T1 is null ? 0d : T1.Value._Value) > (T2 is null ? 0d : T2.Value._Value);
public static bool operator >=({typeName}? T1, {typeName}? T2) => (T1 is null ? 0d : T1.Value._Value) >= (T2 is null ? 0d : T2.Value._Value);
public static bool operator <({typeName}? T1, {typeName}? T2) => T1.Protected() < T2.Protected();
public static bool operator <=({typeName}? T1, {typeName}? T2) => T1.Protected() <= T2.Protected();
public static bool operator >({typeName}? T1, {typeName}? T2) => T1.Protected() > T2.Protected();
public static bool operator >=({typeName}? T1, {typeName}? T2) => T1.Protected() >= T2.Protected();
public static {typeName} operator +({typeName} T2) => new(+T2._Value);
@@ -283,6 +284,11 @@ public readonly partial record struct {typeName} : IMensuraUnit<{typeName}>, IEq
[MethodImpl(MethodImplOptions.AggressiveInlining)]
internal R Sqrt_Internal<R>() where R : struct, IMensuraUnit, IEquatable<R> => Math.Sqrt(_Value).ToUnit<R>();
}
public static class {typeName}Extensions
{
public static double Protected(this {typeName}? unit) => unit is null ? 0d : unit.Value._Value;
}
";
return skeleton.Replace("{typeName}", typeName).Replace("{ns}", ns);
}