pub const TokenOffset = enum(i32) pub fn init(base: TokenIndex, destination: TokenIndex) TokenOffsetpub fn toOptional(to: TokenOffset) OptionalTokenOffsetpub fn toAbsolute(offset: TokenOffset, base: TokenIndex) TokenIndex57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76pub const TokenOffset = enum(i32) {
zero = 0,
_,
pub fn init(base: TokenIndex, destination: TokenIndex) TokenOffset {
const base_i64: i64 = base;
const destination_i64: i64 = destination;
return @fromBackingInt(@intCast(destination_i64 - base_i64));
}
pub fn toOptional(to: TokenOffset) OptionalTokenOffset {
const result: OptionalTokenOffset = @fromBackingInt(@intCast(@backingInt(to)));
assert(result != .none);
return result;
}
pub fn toAbsolute(offset: TokenOffset, base: TokenIndex) TokenIndex {
return @intCast(@as(i64, base) + @backingInt(offset));
}
}
A relative token index.