DoxigAlpha

init

Function parameters

Parameters

#
payload:*ArrayListUnmanaged(u32)
decl_count:u32
field_count:u32
bits_per_field:u32
max_field_size:u32

Functions in this namespace

Functions

#

Source

Implementation

#
fn init(gpa: Allocator, payload: *ArrayListUnmanaged(u32), decl_count: u32, field_count: u32, comptime bits_per_field: u32, comptime max_field_size: u32) Allocator.Error!Self {
    const payload_top: u32 = @intCast(payload.items.len);
    const field_bits_start = payload_top + decl_count;
    const fields_start = field_bits_start + if (bits_per_field > 0) blk: {
        const fields_per_u32 = 32 / bits_per_field;
        break :blk (field_count + fields_per_u32 - 1) / fields_per_u32;
    } else 0;
    const payload_end = fields_start + field_count * max_field_size;
    try payload.resize(gpa, payload_end);
    return .{
        .payload = payload,
        .payload_top = payload_top,
        .field_bits_start = field_bits_start,
        .fields_start = fields_start,
        .fields_end = fields_start,
    };
}