StringTableBuilder

Struct StringTableBuilder 

Source
pub struct StringTableBuilder { /* private fields */ }
Expand description

Builds the string table, remapping query Symbols to bytecode StringIds.

The bytecode format requires a subset of the query interner’s strings. This builder collects only the strings that are actually used and assigns compact StringId indices.

StringId(0) is reserved for an easter egg and is never referenced by instructions. Actual strings start at index 1.

Implementations§

Source§

impl StringTableBuilder

Source

pub fn new() -> Self

Source

pub fn get_or_intern( &mut self, sym: Symbol, interner: &Interner, ) -> Result<StringId, EmitError>

Get or create a StringId for a Symbol.

Source

pub fn intern_str(&mut self, s: &str) -> StringId

Intern a string directly (for generated strings not in the query interner).

Source

pub fn len(&self) -> usize

Number of interned strings.

Source

pub fn is_empty(&self) -> bool

Whether the builder is empty.

Source

pub fn validate(&self) -> Result<(), EmitError>

Validate that the string count fits in u16.

Source

pub fn get(&self, sym: Symbol) -> Option<StringId>

Get the StringId for a Symbol, if it was interned.

Source

pub fn get_str(&self, id: StringId) -> &str

Look up a string by its StringId.

Source

pub fn emit(&self) -> (Vec<u8>, Vec<u8>)

Emit the string blob and offset table.

Returns (blob_bytes, table_bytes).

Trait Implementations§

Source§

impl Debug for StringTableBuilder

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for StringTableBuilder

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.