DoxigAlpha

childTypeAt

Function parameters

Parameters

#
indices:[]const u32
builder:*const Builder

Type definitions in this namespace

Types

#

Functions in this namespace

Functions

#

= 16

Values

#

Source

Implementation

#
pub fn childTypeAt(self: Type, indices: []const u32, builder: *const Builder) Type {
    if (indices.len == 0) return self;
    const item = builder.type_items.items[@intFromEnum(self)];
    return switch (item.tag) {
        .small_array => builder.typeExtraData(Type.Vector, item.data).child
            .childTypeAt(indices[1..], builder),
        .array => builder.typeExtraData(Type.Array, item.data).child
            .childTypeAt(indices[1..], builder),
        .structure,
        .packed_structure,
        => {
            var extra = builder.typeExtraDataTrail(Type.Structure, item.data);
            const fields = extra.trail.next(extra.data.fields_len, Type, builder);
            return fields[indices[0]].childTypeAt(indices[1..], builder);
        },
        .named_structure => builder.typeExtraData(Type.NamedStructure, item.data).body
            .childTypeAt(indices, builder),
        else => unreachable,
    };
}