| author | |
| committer | |
| log | 68be2299172f6d87ed5db2ad2a7fcbdef2085725 |
| tree | 71d2c3953c66756539db4b0dab464b13d7e5f5b9 |
| parent | 27c1e0b453d50f8c242fd1153290a00b74dff018 |
3 files changed, 36 insertions(+), 23 deletions(-)
lib/std/target.zig+30| ... | ... | @@ -101,6 +101,36 @@ pub const Target = struct { |
| 101 | 101 | return @enumToInt(ver) >= @enumToInt(self.min) and @enumToInt(ver) <= @enumToInt(self.max); |
| 102 | 102 | } |
| 103 | 103 | }; |
| 104 | ||
| 105 | pub fn format( | |
| 106 | self: WindowsVersion, | |
| 107 | comptime fmt: []const u8, | |
| 108 | options: std.fmt.FormatOptions, | |
| 109 | out_stream: var, | |
| 110 | ) !void { | |
| 111 | if (fmt.len > 0 and fmt[0] == 's') { | |
| 112 | if ( | |
| 113 | @enumToInt(self) >= @enumToInt(WindowsVersion.nt4) and @enumToInt(self) <= @enumToInt(WindowsVersion.win10_19h1) | |
| 114 | ) { | |
| 115 | try std.fmt.format(out_stream, ".{}", .{@tagName(self)}); | |
| 116 | } else { | |
| 117 | try std.fmt.format(out_stream, | |
| 118 | "@intToEnum(Target.Os.WindowsVersion, {})", | |
| 119 | .{ @enumToInt(self) } | |
| 120 | ); | |
| 121 | } | |
| 122 | } else { | |
| 123 | if ( | |
| 124 | @enumToInt(self) >= @enumToInt(WindowsVersion.nt4) and @enumToInt(self) <= @enumToInt(WindowsVersion.win10_19h1) | |
| 125 | ) { | |
| 126 | try std.fmt.format(out_stream, "WindowsVersion.{}", .{@tagName(self)}); | |
| 127 | } else { | |
| 128 | try std.fmt.format(out_stream, "WindowsVersion(", .{@typeName(@This())}); | |
| 129 | try std.fmt.format(out_stream, "{}", .{@enumToInt(self)}); | |
| 130 | try out_stream.writeAll(")"); | |
| 131 | } | |
| 132 | } | |
| 133 | } | |
| 104 | 134 | }; |
| 105 | 135 | |
| 106 | 136 | pub const LinuxVersionRange = struct { |
lib/std/zig/cross_target.zig+2-2| ... | ... | @@ -514,14 +514,14 @@ pub const CrossTarget = struct { |
| 514 | 514 | switch (self.getOsVersionMin()) { |
| 515 | 515 | .none => {}, |
| 516 | 516 | .semver => |v| try result.outStream().print(".{}", .{v}), |
| 517 | .windows => |v| try result.outStream().print(".{}", .{@tagName(v)}), | |
| 517 | .windows => |v| try result.outStream().print("{s}", .{v}), | |
| 518 | 518 | } |
| 519 | 519 | } |
| 520 | 520 | if (self.os_version_max) |max| { |
| 521 | 521 | switch (max) { |
| 522 | 522 | .none => {}, |
| 523 | 523 | .semver => |v| try result.outStream().print("...{}", .{v}), |
| 524 | .windows => |v| try result.outStream().print("...{}", .{@tagName(v)}), | |
| 524 | .windows => |v| try result.outStream().print("..{s}", .{v}), | |
| 525 | 525 | } |
| 526 | 526 | } |
| 527 | 527 |
src-self-hosted/stage2.zig+4-21| ... | ... | @@ -653,23 +653,6 @@ export fn stage2_libc_render(stage1_libc: *Stage2LibCInstallation, output_file: |
| 653 | 653 | return .None; |
| 654 | 654 | } |
| 655 | 655 | |
| 656 | fn enumToString(value: var, type_name: []const u8) ![]const u8 { | |
| 657 | switch (@typeInfo(@TypeOf(value))) { | |
| 658 | .Enum => |e| { | |
| 659 | if (e.is_exhaustive) { | |
| 660 | return std.fmt.allocPrint(std.heap.c_allocator, ".{}", .{@tagName(value)}); | |
| 661 | } else { | |
| 662 | return std.fmt.allocPrint( | |
| 663 | std.heap.c_allocator, | |
| 664 | "@intToEnum({}, {})", | |
| 665 | .{ type_name, @enumToInt(value) }, | |
| 666 | ); | |
| 667 | } | |
| 668 | }, | |
| 669 | else => unreachable, | |
| 670 | } | |
| 671 | } | |
| 672 | ||
| 673 | 656 | // ABI warning |
| 674 | 657 | const Stage2Target = extern struct { |
| 675 | 658 | arch: c_int, |
| ... | ... | @@ -887,13 +870,13 @@ const Stage2Target = extern struct { |
| 887 | 870 | |
| 888 | 871 | .windows => try os_builtin_str_buffer.outStream().print( |
| 889 | 872 | \\ .windows = .{{ |
| 890 | \\ .min = {}, | |
| 891 | \\ .max = {}, | |
| 873 | \\ .min = {s}, | |
| 874 | \\ .max = {s}, | |
| 892 | 875 | \\ }}}}, |
| 893 | 876 | \\ |
| 894 | 877 | , .{ |
| 895 | try enumToString(target.os.version_range.windows.min, "Target.Os.WindowsVersion"), | |
| 896 | try enumToString(target.os.version_range.windows.max, "Target.Os.WindowsVersion"), | |
| 878 | target.os.version_range.windows.min, | |
| 879 | target.os.version_range.windows.max, | |
| 897 | 880 | }), |
| 898 | 881 | } |
| 899 | 882 | try os_builtin_str_buffer.appendSlice("};\n"); |