Compare commits

..

1 Commits

Author SHA1 Message Date
David Mak 6322b6db90 core: Add ArrayLikeValue
For exposing LLVM values that can be accessed like an array.
2024-03-21 15:46:10 +08:00
3 changed files with 5 additions and 11 deletions

View File

@ -2,14 +2,7 @@ use std::{collections::HashMap, convert::TryInto, iter::once, iter::zip};
use crate::{ use crate::{
codegen::{ codegen::{
classes::{ classes::{ArrayLikeIndexer, ListValue, NDArrayValue, RangeValue, UntypedArrayLikeAccessor},
ArrayLikeIndexer,
ArrayLikeValue,
ListValue,
NDArrayValue,
RangeValue,
UntypedArrayLikeAccessor,
},
concrete_type::{ConcreteFuncArg, ConcreteTypeEnum, ConcreteTypeStore}, concrete_type::{ConcreteFuncArg, ConcreteTypeEnum, ConcreteTypeStore},
gen_in_range_check, gen_in_range_check,
get_llvm_type, get_llvm_type,
@ -42,6 +35,7 @@ use itertools::{chain, izip, Itertools, Either};
use nac3parser::ast::{ use nac3parser::ast::{
self, Boolop, Comprehension, Constant, Expr, ExprKind, Location, Operator, StrRef, self, Boolop, Comprehension, Constant, Expr, ExprKind, Location, Operator, StrRef,
}; };
use crate::codegen::classes::ArrayLikeValue;
use super::{CodeGenerator, llvm_intrinsics::call_memcpy_generic, need_sret}; use super::{CodeGenerator, llvm_intrinsics::call_memcpy_generic, need_sret};

View File

@ -1,7 +1,7 @@
use crate::typecheck::typedef::Type; use crate::typecheck::typedef::Type;
use super::{ use super::{
classes::{ArrayLikeIndexer, ArrayLikeValue, ListValue, NDArrayValue, UntypedArrayLikeMutator}, classes::{ArrayLikeIndexer, ListValue, NDArrayValue, UntypedArrayLikeMutator},
CodeGenContext, CodeGenContext,
CodeGenerator, CodeGenerator,
}; };
@ -16,6 +16,7 @@ use inkwell::{
}; };
use itertools::Either; use itertools::Either;
use nac3parser::ast::Expr; use nac3parser::ast::Expr;
use crate::codegen::classes::ArrayLikeValue;
#[must_use] #[must_use]
pub fn load_irrt(ctx: &Context) -> Module { pub fn load_irrt(ctx: &Context) -> Module {

View File

@ -8,11 +8,9 @@ use crate::{
codegen::{ codegen::{
classes::{ classes::{
ArrayLikeIndexer, ArrayLikeIndexer,
ArrayLikeValue,
ListValue, ListValue,
NDArrayValue, NDArrayValue,
TypedArrayLikeAccessor, TypedArrayLikeAccessor,
UntypedArrayLikeAccessor,
}, },
CodeGenContext, CodeGenContext,
CodeGenerator, CodeGenerator,
@ -30,6 +28,7 @@ use crate::{
}, },
typecheck::typedef::{FunSignature, Type}, typecheck::typedef::{FunSignature, Type},
}; };
use crate::codegen::classes::{ArrayLikeValue, UntypedArrayLikeAccessor};
/// Creates an `NDArray` instance from a dynamic shape. /// Creates an `NDArray` instance from a dynamic shape.
/// ///