From 75fac8e72948303912334174d454880efed80518 Mon Sep 17 00:00:00 2001 From: Wes Sleeman Date: Thu, 22 May 2025 11:27:59 -0700 Subject: [PATCH 1/2] =?UTF-8?q?Added=20static=20constructors=20to=20TimeDu?= =?UTF-8?q?ration=20=C3=A0=20la=20System.TimeSpan=20for=20C#=20user=20fami?= =?UTF-8?q?liarity.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bindings-csharp/BSATN.Runtime/Builtins.cs | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/crates/bindings-csharp/BSATN.Runtime/Builtins.cs b/crates/bindings-csharp/BSATN.Runtime/Builtins.cs index f7122db477e..40ed8e7d033 100644 --- a/crates/bindings-csharp/BSATN.Runtime/Builtins.cs +++ b/crates/bindings-csharp/BSATN.Runtime/Builtins.cs @@ -432,6 +432,31 @@ public record struct TimeDuration(long Microseconds) : IStructuralReadWrite { public static readonly TimeDuration ZERO = new(0); + /// + /// Returns a that represents a specified number of , accurate to the nearest microsecond. + /// + public static TimeDuration FromMilliseconds(double milliseconds) => new((long)(milliseconds * 1000L)); + + /// + /// Returns a that represents a specified number of , accurate to the nearest microsecond. + /// + public static TimeDuration FromSeconds(double seconds) => new((long)(seconds * Util.MicrosecondsPerSecond)); + + /// + /// Returns a that represents a specified number of 60-second . + /// + public static TimeDuration FromMinutes(double minutes) => FromSeconds(minutes * 60); + + /// + /// Returns a that represents a specified number of 60-minute . + /// + public static TimeDuration FromHours(double hours) => FromMinutes(hours * 60); + + /// + /// Returns a that represents a specified number of 24-hour . + /// + public static TimeDuration FromDays(double days) => FromHours(days * 24); + public static implicit operator TimeSpan(TimeDuration d) => new(d.Microseconds * Util.TicksPerMicrosecond); From aebe7af931061f937bd2ba5ff3b1265c98054f3f Mon Sep 17 00:00:00 2001 From: Wes Sleeman Date: Fri, 23 May 2025 13:08:19 -0700 Subject: [PATCH 2/2] Formatting. --- .../bindings-csharp/BSATN.Runtime/Builtins.cs | 48 ++++++++++--------- 1 file changed, 25 insertions(+), 23 deletions(-) diff --git a/crates/bindings-csharp/BSATN.Runtime/Builtins.cs b/crates/bindings-csharp/BSATN.Runtime/Builtins.cs index 40ed8e7d033..a3478d18023 100644 --- a/crates/bindings-csharp/BSATN.Runtime/Builtins.cs +++ b/crates/bindings-csharp/BSATN.Runtime/Builtins.cs @@ -432,30 +432,32 @@ public record struct TimeDuration(long Microseconds) : IStructuralReadWrite { public static readonly TimeDuration ZERO = new(0); - /// - /// Returns a that represents a specified number of , accurate to the nearest microsecond. + /// + /// Returns a that represents a specified number of , accurate to the nearest microsecond. + /// + public static TimeDuration FromMilliseconds(double milliseconds) => + new((long)(milliseconds * 1000L)); + + /// + /// Returns a that represents a specified number of , accurate to the nearest microsecond. + /// + public static TimeDuration FromSeconds(double seconds) => + new((long)(seconds * Util.MicrosecondsPerSecond)); + + /// + /// Returns a that represents a specified number of 60-second . + /// + public static TimeDuration FromMinutes(double minutes) => FromSeconds(minutes * 60); + + /// + /// Returns a that represents a specified number of 60-minute . + /// + public static TimeDuration FromHours(double hours) => FromMinutes(hours * 60); + + /// + /// Returns a that represents a specified number of 24-hour . /// - public static TimeDuration FromMilliseconds(double milliseconds) => new((long)(milliseconds * 1000L)); - - /// - /// Returns a that represents a specified number of , accurate to the nearest microsecond. - /// - public static TimeDuration FromSeconds(double seconds) => new((long)(seconds * Util.MicrosecondsPerSecond)); - - /// - /// Returns a that represents a specified number of 60-second . - /// - public static TimeDuration FromMinutes(double minutes) => FromSeconds(minutes * 60); - - /// - /// Returns a that represents a specified number of 60-minute . - /// - public static TimeDuration FromHours(double hours) => FromMinutes(hours * 60); - - /// - /// Returns a that represents a specified number of 24-hour . - /// - public static TimeDuration FromDays(double days) => FromHours(days * 24); + public static TimeDuration FromDays(double days) => FromHours(days * 24); public static implicit operator TimeSpan(TimeDuration d) => new(d.Microseconds * Util.TicksPerMicrosecond);