luaur_bytecode/methods/
bytecode_builder_add_constant_integer.rs1use crate::enums::r#type::Type;
2use crate::records::bytecode_builder::BytecodeBuilder;
3use crate::records::constant::Constant;
4use crate::records::constant_key::ConstantKey;
5
6impl BytecodeBuilder {
7 pub fn add_constant_integer(&mut self, value: i64) -> i32 {
8 let mut c = Constant {
9 r#type: Type::Type_Integer,
10 value: unsafe { core::mem::zeroed() },
11 };
12 unsafe {
13 c.value.valueInteger64 = value;
14 }
15
16 let mut k = ConstantKey {
17 r#type: Type::Type_Integer,
18 value: 0,
19 extra: 0,
20 };
21
22 unsafe {
25 core::ptr::copy_nonoverlapping(
26 &value as *const i64 as *const u8,
27 &mut k.value as *mut u64 as *mut u8,
28 core::mem::size_of::<i64>(),
29 );
30 }
31
32 self.add_constant(k, c)
33 }
34}