use crate::IRType;
use std::fmt::Display;
#[derive(Debug, Clone, Copy, PartialEq)]
pub enum Const {
I8(i8),
I16(i16),
I32(i32),
I64(i64),
F32(f32),
F64(f64),
Ptr(i64),
}
impl Const {
pub(crate) fn get_type(&self) -> IRType {
match self {
Const::I8(_) => IRType::I8,
Const::I16(_) => IRType::I16,
Const::I32(_) => IRType::I32,
Const::I64(_) => IRType::I64,
Const::F32(_) => IRType::F32,
Const::F64(_) => IRType::F64,
Const::Ptr(_) => IRType::Ptr,
}
}
}
impl Display for Const {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
Const::I8(val) => write!(f, "i8({})", val),
Const::I16(val) => write!(f, "i16({})", val),
Const::I32(val) => write!(f, "i32({})", val),
Const::I64(val) => write!(f, "i64({})", val),
Const::F32(val) => write!(f, "f32({})", val),
Const::F64(val) => write!(f, "f64({})", val),
Const::Ptr(val) => write!(f, "ptr({})", val),
}
}
}