Skip to documentation
SLOP

tiny.chant.TokenStorage

Reference tiny.chant TokenStorage

Defined in tiny.chant.

API (16)

Actions

Public operations.

Types and contracts

Public types and contracts.

Fields and members

Public fields and members.

No direct callersNo direct callstiny.chantTokenStorage
Static calls · unresolved targets: unknown · external targets: unknown.

Source

Source: lib/chant/src/lexer/stream.zig:33

zig
pub const Storage = struct {    phase: alloc_phase.capacity.Phase,    capacity: capacity_mod.Capacity,    storage: @This().Storage,    tokens: []Token,    pub const storage_alignment: usize = capacity_mod.storage_alignment;    pub const Storage = []align(storage_alignment) u8;    pub const Limits: type = capacity_mod.Limits;    pub const Capacity: type = capacity_mod.Capacity;    pub const Exhaustion: type = StreamExhaustion;    pub const InitError = capacity_mod.DeriveError || error{StorageTooShort};    pub const work_limits: alloc_phase.capacity.WorkLimits = .{        .transition_steps_max = std.math.maxInt(usize),        .cleanup_steps_per_call_max = 0,        .cleanup_calls_at_capacity_max = 0,    };    pub const claim: alloc_phase.capacity.Declaration = .{        .source = .{            .id = "chant.lexed_token_storage",            .kind = .phase_static,            .limit_source = .caller,            .storage = .{                .covered = &.{                    .{                        .id = "exact_surveyed_lexed_token_sequence_including_eof",                        .lifetime = .steady,                        .detail = "exact surveyed lexed token sequence including EOF",                    },                },                .excluded = &.{                    "caller-owned stable source and file-name bytes borrowed by the survey and tokens",                    "consumer-owned AST and diagnostic retention",                },            },            .capacity = .{                .inputs = &.{                    alloc_phase.capacity.bindInput(capacity_mod.Limits, "tokens", "tokens"),                },                .type_selectors = &.{                    alloc_phase.capacity.bindType(Token, "token"),                },                .nodes = &.{                    .{ .input = 0 },                    .{ .scale = .{ .node = 0, .coefficient = .{ .size_of_concrete_type = 0 } } },                },                .assertions = &.{.{                    .scope = .closure_total,                    .measure = .retained,                    .relation = .exact,                    .expression = 1,                }},            },            .overload = .{                .kind = .reject_before_mutation,                .detail = "short storage and mismatched surveys reject before token placement",            },            .risks = .{                .transitive = .{                    .status = .witnessed,                    .detail = "survey and fill call only the allocator-free lexer scanner",                },                .foreign = .{                    .status = .excluded,                    .detail = "lexing reads borrowed memory and crosses no foreign boundary",                },            },            .work = .{ .equation = "survey and fill each take at most source bytes plus one lexer transition" },            .obligations = &.{                .{ .key = "chant_lexed_tokens_capacity", .role = .capacity_model },                .{ .key = "chant_lexed_tokens_boundary", .role = .overload },                .{ .key = "chant_lexed_tokens_oom", .role = .custom },                .{ .key = "chant_lexed_tokens_identity", .role = .overload },                .{ .key = "chant_lexed_tokens_sealed_transitive_risk", .role = .transitive_risk },                .{ .key = "chant_lexed_tokens_sealed_foreign_risk", .role = .foreign_risk },                .{ .key = "chant_lexed_tokens_differential", .role = .work_bound },            },        },        .bindings = .{            .owner = @This(),            .seal = .{                .family = alloc_phase.capacity.selector(@This().activate),                .premise = .{                    .class = .checked_semantic_fact,                    .authority = .checker,                },            },            .teardown = .{                .family = alloc_phase.capacity.selector(@This().deinit),                .premise = .{                    .class = .checked_semantic_fact,                    .authority = .checker,                },            },        },    };    pub fn init(        storage: @This().Storage,        limits: capacity_mod.Limits,    ) InitError!@This() {        const capacity = try capacity_mod.Capacity.derive(limits);        if (storage.len < capacity.storage_bytes) return error.StorageTooShort;        const owned = storage[0..capacity.storage_bytes];        return .{            .phase = .initialization,            .capacity = capacity,            .storage = owned,            .tokens = typedTokens(owned, limits.tokens),        };    }    pub fn activate(self: *@This()) void {        std.debug.assert(self.phase == .initialization);        std.debug.assert(self.storage.len == self.capacity.storage_bytes);        std.debug.assert(self.tokens.len == self.capacity.limits.tokens);        self.phase = .steady;    }    pub fn fill(        self: *@This(),        token_survey: Survey,        source: []const u8,        file: []const u8,    ) (chant.lexer.Error || StreamExhaustion)![]const Token {        std.debug.assert(self.phase == .steady);        try requireIdentity(token_survey, source, file);        if (token_survey.limits.tokens > self.tokens.len) {            return error.TokenCapacityExceeded;        }        var lexer = state.Lexer.init(source, file);        var index: usize = 0;        while (index < token_survey.limits.tokens) : (index += 1) {            const tok = try scan.next(&lexer);            self.tokens[index] = tok;            if (tok.kind == .eof) {                const token_count = index + 1;                if (token_count != token_survey.limits.tokens) unreachable;                return self.tokens[0..token_count];            }        }        unreachable;    }    pub fn deinit(self: *@This()) @This().Storage {        std.debug.assert(self.phase == .steady);        self.phase = .teardown;        const storage = self.storage;        self.* = undefined;        return storage;    }};

Source: lib/chant/src/root.zig:74

zig
pub const TokenStorage = lexer.Storage;
Called byCallsNo direct callsprivate sourcelib.chant.src.lexer.streaminitFailurestest sourcelib.chant.src.lexer.streamtest: activated token storage fills c...test sourcelib.chant.src.lexer.streamtest: token fill requires the surveye...test sourcelib.chant.src.lexer.streamtest: token storage accepts max and r...test sourcelib.chant.src.lexer.streamtest: token survey and fill match dir...test sourcelib.chant.src.lexer.streamtest: zero token capacity owns no byt...TokenStorageactivate
Static calls · unresolved targets: 0 · external targets: 0.
Called byCallsNo direct callsprivate sourcelib.chant.src.lexer.streaminitFailurestest sourcelib.chant.src.lexer.streamtest: activated token storage fills c...test sourcelib.chant.src.lexer.streamtest: token fill requires the surveye...test sourcelib.chant.src.lexer.streamtest: token storage accepts max and r...test sourcelib.chant.src.lexer.streamtest: token survey and fill match dir...test sourcelib.chant.src.lexer.streamtest: zero token capacity owns no byt...TokenStoragedeinit
Static calls · unresolved targets: 0 · external targets: 0.
Called byCallsprivate sourcelib.chant.src.lexer.streaminitFailurestest sourcelib.chant.src.lexer.streamtest: activated token storage fills c...test sourcelib.chant.src.lexer.streamtest: token fill requires the surveye...test sourcelib.chant.src.lexer.streamtest: token storage accepts max and r...test sourcelib.chant.src.lexer.streamtest: token survey and fill match dir...test sourcelib.chant.src.lexer.streamtest: zero token capacity owns no byt...lexernextLexerinitprivate sourcelib.chant.src.lexer.streamrequireIdentityTokenStoragefill
Static calls · unresolved targets: 0 · external targets: 0.
Called byCallsprivate sourcelib.chant.src.lexer.streaminitFailurestest sourcelib.chant.src.lexer.streamtest: activated token storage fills c...test sourcelib.chant.src.lexer.streamtest: token fill requires the surveye...test sourcelib.chant.src.lexer.streamtest: token storage accepts max and r...test sourcelib.chant.src.lexer.streamtest: token survey and fill match dir...test sourcelib.chant.src.lexer.streamtest: zero token capacity owns no byt...private sourcelib.chant.src.lexer.streamtypedTokensTokenStorageinit
Static calls · unresolved targets: 0 · external targets: 1.

Also reachable as

lexer.Storage.

Audit

Definitions13
Public names26
Members4
Version26.7.0
Revisiondaab053ee433