Skip to main content

luaur_compiler/methods/
constant_get_string.rs

1use crate::enums::type_constant_folding::Type;
2use crate::records::constant::Constant;
3use core::ffi::c_char;
4use core::mem::transmute;
5use luaur_ast::records::ast_array::AstArray;
6use luaur_common::macros::luau_assert::LUAU_ASSERT;
7
8impl Constant {
9    pub fn get_string(&self) -> AstArray<c_char> {
10        LUAU_ASSERT!(self.r#type == Type::Type_String);
11        let data = unsafe { self.data.value_string as *mut c_char };
12        let size = self.string_length as usize;
13        unsafe { transmute::<(*mut c_char, usize), AstArray<c_char>>((data, size)) }
14    }
15}