pipeline_script/llvm/value/
array.rs

1use 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}