using InnovEnergy.Lib.SrcGen; using InnovEnergy.Lib.SrcGen.Attributes; using InnovEnergy.Lib.Time.Unix; namespace InnovEnergy.Lib.Units; [Generate][Generate] public readonly partial struct ActivePower { public static String Unit => "W"; public static String Symbol => "P"; // P=UI public static Voltage operator /(ActivePower power, Current current) => new Voltage(power.Value / current.Value); public static Current operator /(ActivePower power, Voltage voltage) => new Current(power.Value / voltage.Value); public static Energy operator *(ActivePower power, TimeSpan timeSpan) => power.Value / 1000 * timeSpan.TotalHours; public static Energy operator *(TimeSpan timeSpan, ActivePower power) => power.Value / 1000 * timeSpan.TotalHours; public static Energy operator *(ActivePower power, UnixTimeSpan timeSpan) => power.Value * timeSpan.Ticks / 3_600_000; public static Energy operator *(UnixTimeSpan timeSpan, ActivePower power) => power.Value * timeSpan.Ticks / 3_600_000; }