Function childTypeAt [src]

Prototype

pub fn childTypeAt(self: Type, indices: []const u32, builder: *const Builder) Type

Parameters

self: Typeindices: []const u32builder: *const Builder

Source

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, }; }