pipeline_script/llvm/value/
array.rs1use crate::llvm::types::LLVMType;
2use crate::llvm::value::LLVMValue;
3use llvm_sys::core::LLVMIsUndef;
4use llvm_sys::prelude::LLVMValueRef;
5
6#[derive(Clone, Debug)]
7pub struct ArrayValue {
8 reference: LLVMValueRef,
9 element: LLVMType,
10 #[allow(unused)]
11 length: usize,
12}
13
14impl ArrayValue {
15 pub fn new(reference: LLVMValueRef, element: LLVMType, length: usize) -> Self {
16 Self {
17 reference,
18 element,
19 length,
20 }
21 }
22 pub fn get_reference(&self) -> LLVMValueRef {
23 self.reference
24 }
25 pub fn get_element_type(&self) -> LLVMType {
26 self.element.clone()
27 }
28 pub fn is_undef(&self) -> bool {
29 unsafe { LLVMIsUndef(self.reference) == 1 }
30 }
31}
32impl From<ArrayValue> for LLVMValue {
33 fn from(value: ArrayValue) -> Self {
34 LLVMValue::Array(value)
35 }
36}