DVUI

displayArray

Parameters

#
src:std.builtin.SourceLocation
std.builtin.SourceLocation
ContainerT:type
type
field_name:[]const u8
[]const u8
field_value_ptr:anytype
anytype
depth:usize
usize
field_option:FieldOptions
FieldOptions
options:anytype
anytype

Source

Implementation

#
pub fn displayArray(
    src: std.builtin.SourceLocation,
    comptime ContainerT: type,
    comptime field_name: []const u8,
    field_value_ptr: anytype,
    comptime depth: usize,
    field_option: FieldOptions,
    options: anytype,
) void {
    validateFieldPtrType(field_name, &.{.array}, "displayArray", @TypeOf(field_value_ptr));
    if (field_option.displayMode() == .none) return;

    if (displayContainer(src, field_option.displayLabel(field_name), field_option.defaultExpanded())) |vbox| {
        defer vbox.deinit();
        var alignment: dvui.Alignment = .init(@src(), depth);
        defer alignment.deinit();
        var element_field_option = field_option;
        for (field_value_ptr, 0..) |*val, i| {
            var hbox = dvui.box(@src(), .{ .dir = .horizontal }, .{ .expand = .horizontal, .id_extra = i });
            defer hbox.deinit();

            var field_name_buf: [21]u8 = undefined; // 20 chars = u64 + ':'
            const field_name_str = std.fmt.bufPrint(&field_name_buf, "{d}:", .{i}) catch "#";
            element_field_option.labelSet(field_name_str);

            displayField(@src(), ContainerT, field_name, val, depth, element_field_option, options, &alignment);
        }
    }
}