structstd.zig.llvm.Builder.Metadata.Subprogram.DISPFlags[src]

Fields

Virtuality: enum(u2) { Zero, Virtual, PureVirtual } = .Zero
LocalToUnit: bool = false
Definition: bool = false
Optimized: bool = false
Pure: bool = false
Elemental: bool = false
Recursive: bool = false
MainSubprogram: bool = false
Deleted: bool = false
ReservedBit10: u1 = 0
ObjCDirect: bool = false
Unused: u20 = 0

Functions

Functionformat[src]

pub fn format( self: DISPFlags, comptime _: []const u8, _: std.fmt.FormatOptions, writer: anytype, ) @TypeOf(writer).Error!void

Parameters

self: DISPFlags
_: []const u8

Source Code

Source code
pub fn format(
    self: DISPFlags,
    comptime _: []const u8,
    _: std.fmt.FormatOptions,
    writer: anytype,
) @TypeOf(writer).Error!void {
    var need_pipe = false;
    inline for (@typeInfo(DISPFlags).@"struct".fields) |field| {
        switch (@typeInfo(field.type)) {
            .bool => if (@field(self, field.name)) {
                if (need_pipe) try writer.writeAll(" | ") else need_pipe = true;
                try writer.print("DISPFlag{s}", .{field.name});
            },
            .@"enum" => if (@field(self, field.name) != .Zero) {
                if (need_pipe) try writer.writeAll(" | ") else need_pipe = true;
                try writer.print("DISPFlag{s}", .{@tagName(@field(self, field.name))});
            },
            .int => assert(@field(self, field.name) == 0),
            else => @compileError("bad field type: " ++ field.name ++ ": " ++
                @typeName(field.type)),
        }
    }
    if (!need_pipe) try writer.writeByte('0');
}

Source Code

Source code
pub const DISPFlags = packed struct(u32) {
    Virtuality: enum(u2) { Zero, Virtual, PureVirtual } = .Zero,
    LocalToUnit: bool = false,
    Definition: bool = false,
    Optimized: bool = false,
    Pure: bool = false,
    Elemental: bool = false,
    Recursive: bool = false,
    MainSubprogram: bool = false,
    Deleted: bool = false,
    ReservedBit10: u1 = 0,
    ObjCDirect: bool = false,
    Unused: u20 = 0,

    pub fn format(
        self: DISPFlags,
        comptime _: []const u8,
        _: std.fmt.FormatOptions,
        writer: anytype,
    ) @TypeOf(writer).Error!void {
        var need_pipe = false;
        inline for (@typeInfo(DISPFlags).@"struct".fields) |field| {
            switch (@typeInfo(field.type)) {
                .bool => if (@field(self, field.name)) {
                    if (need_pipe) try writer.writeAll(" | ") else need_pipe = true;
                    try writer.print("DISPFlag{s}", .{field.name});
                },
                .@"enum" => if (@field(self, field.name) != .Zero) {
                    if (need_pipe) try writer.writeAll(" | ") else need_pipe = true;
                    try writer.print("DISPFlag{s}", .{@tagName(@field(self, field.name))});
                },
                .int => assert(@field(self, field.name) == 0),
                else => @compileError("bad field type: " ++ field.name ++ ": " ++
                    @typeName(field.type)),
            }
        }
        if (!need_pipe) try writer.writeByte('0');
    }
}