From 4b280ac7e9730a30cb3a03350711a13cf45c5dfc Mon Sep 17 00:00:00 2001 From: Rohlem Date: Thu, 17 Dec 2020 15:55:05 +0100 Subject: [PATCH] add std.zig.system.windows version check utility functions --- lib/std/zig/system/windows.zig | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/lib/std/zig/system/windows.zig b/lib/std/zig/system/windows.zig index d32b28f607..d352703e40 100644 --- a/lib/std/zig/system/windows.zig +++ b/lib/std/zig/system/windows.zig @@ -43,3 +43,19 @@ pub fn detectRuntimeVersion() WindowsVersion { return @intToEnum(WindowsVersion, version); } + +/// Returns whether the target os versions are uniformly at least as new as the argument: +/// true/false if this holds for the entire target range, null if it only holds for some. +pub fn targetVersionIsAtLeast(requested_version: WindowsVersion) ?bool { + const requested = @enumToInt(requested_version); + const version_range = std.builtin.os.version_range.windows; + const target_min = @enumToInt(version_range.min); + const target_max = @enumToInt(version_range.max); + return if (target_max < requested) false else if (target_min >= requested) true else null; +} + +/// Returns whether the runtime os version is at least as new as the argument. +pub fn runtimeVersionIsAtLeast(requested_version: WindowsVersion) bool { + return targetVersionIsAtLeast(requested_version) orelse + (@enumToInt(detectRuntimeVersion()) >= @enumToInt(requested_version)); +}