struct Subprogram [src]

Fields

file: Metadata
name: MetadataString
linkage_name: MetadataString
line: u32
scope_line: u32
ty: Metadata
di_flags: DIFlags
compile_unit: Metadata

Members

Source

pub const Subprogram = struct { pub const Options = struct { di_flags: DIFlags, sp_flags: DISPFlags, }; 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'); } }; file: Metadata, name: MetadataString, linkage_name: MetadataString, line: u32, scope_line: u32, ty: Metadata, di_flags: DIFlags, compile_unit: Metadata, }