luaur_bytecode/methods/
bytecode_builder_get_string_table.rs1use crate::records::bytecode_builder::BytecodeBuilder;
2use alloc::vec::Vec;
3use luaur_common::macros::luau_assert::LUAU_ASSERT;
4
5impl BytecodeBuilder {
6 pub fn get_string_table(&self) -> Vec<&str> {
7 let table_len = self.string_table.size();
8 let mut strings: Vec<&str> = Vec::with_capacity(table_len);
9 unsafe {
10 strings.set_len(table_len);
11 }
12
13 for (string_ref, &index) in self.string_table.iter() {
14 LUAU_ASSERT!(index > 0 && (index as usize) <= strings.len());
15 let data = unsafe {
16 core::slice::from_raw_parts(string_ref.data as *const u8, string_ref.length)
17 };
18 strings[index as usize - 1] = core::str::from_utf8(data).unwrap_or("");
19 }
20 strings
21 }
22}