Skip to main content

oxilean_codegen/llvm_backend/
llvmvalue_traits.rs

1//! # LlvmValue - Trait Implementations
2//!
3//! This module contains trait implementations for `LlvmValue`.
4//!
5//! ## Implemented Traits
6//!
7//! - `Display`
8//!
9//! 🤖 Generated with [SplitRS](https://github.com/cool-japan/splitrs)
10
11use crate::lcnf::*;
12
13use super::types::LlvmValue;
14use std::fmt;
15
16impl fmt::Display for LlvmValue {
17    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
18        match self {
19            LlvmValue::Const(n) => write!(f, "{}", n),
20            LlvmValue::Float(v) => write!(f, "{:.17e}", v),
21            LlvmValue::Undef => write!(f, "undef"),
22            LlvmValue::Null => write!(f, "null"),
23            LlvmValue::True_ => write!(f, "true"),
24            LlvmValue::False_ => write!(f, "false"),
25            LlvmValue::GlobalRef(name) => write!(f, "@{}", name),
26            LlvmValue::LocalRef(name) => write!(f, "%{}", name),
27            LlvmValue::ConstArray(ty, elems) => {
28                write!(f, "[")?;
29                for (i, e) in elems.iter().enumerate() {
30                    if i > 0 {
31                        write!(f, ", ")?;
32                    }
33                    write!(f, "{} {}", ty, e)?;
34                }
35                write!(f, "]")
36            }
37            LlvmValue::ConstStruct(fields) => {
38                write!(f, "{{ ")?;
39                for (i, field) in fields.iter().enumerate() {
40                    if i > 0 {
41                        write!(f, ", ")?;
42                    }
43                    write!(f, "{}", field)?;
44                }
45                write!(f, " }}")
46            }
47            LlvmValue::ZeroInitializer => write!(f, "zeroinitializer"),
48        }
49    }
50}