Add some support for custom struct types in lib
This commit is contained in:
parent
1acaa29a12
commit
0ec427252f
@ -38,6 +38,7 @@ Currently missing relevant features (TODOs) are:
|
||||
- ~~Extern functions~~ (DONE)
|
||||
- ~~Strings~~ (DONE)
|
||||
- Loops
|
||||
- Debug Information
|
||||
|
||||
### Why "Reid"
|
||||
|
||||
|
@ -5,12 +5,15 @@ use std::{cell::RefCell, rc::Rc};
|
||||
|
||||
use crate::{
|
||||
BlockData, ConstValue, FunctionData, Instr, InstructionData, ModuleData, TerminatorKind, Type,
|
||||
util::match_types,
|
||||
TypeData, util::match_types,
|
||||
};
|
||||
|
||||
#[derive(Clone, Hash, Copy, PartialEq, Eq)]
|
||||
pub struct ModuleValue(pub(crate) usize);
|
||||
|
||||
#[derive(Clone, Hash, Copy, PartialEq, Eq)]
|
||||
pub struct TypeValue(pub(crate) ModuleValue, pub(crate) usize);
|
||||
|
||||
#[derive(Clone, Hash, Copy, PartialEq, Eq)]
|
||||
pub struct FunctionValue(pub(crate) ModuleValue, pub(crate) usize);
|
||||
|
||||
@ -25,6 +28,13 @@ pub struct ModuleHolder {
|
||||
pub(crate) value: ModuleValue,
|
||||
pub(crate) data: ModuleData,
|
||||
pub(crate) functions: Vec<FunctionHolder>,
|
||||
pub(crate) types: Vec<TypeHolder>,
|
||||
}
|
||||
|
||||
#[derive(Clone)]
|
||||
pub struct TypeHolder {
|
||||
pub(crate) value: TypeValue,
|
||||
pub(crate) data: TypeData,
|
||||
}
|
||||
|
||||
#[derive(Clone)]
|
||||
@ -65,6 +75,7 @@ impl Builder {
|
||||
value,
|
||||
data,
|
||||
functions: Vec::new(),
|
||||
types: Vec::new(),
|
||||
});
|
||||
value
|
||||
}
|
||||
|
@ -196,6 +196,10 @@ impl ModuleHolder {
|
||||
context.context_ref,
|
||||
);
|
||||
|
||||
for _ty in &self.types {
|
||||
todo!("Do something with types!");
|
||||
}
|
||||
|
||||
// Compile the contents
|
||||
|
||||
let mut functions = HashMap::new();
|
||||
|
@ -263,3 +263,14 @@ pub enum TerminatorKind {
|
||||
Br(BlockValue),
|
||||
CondBr(InstructionValue, BlockValue, BlockValue),
|
||||
}
|
||||
|
||||
#[derive(Debug, PartialEq, Eq, Clone, Hash)]
|
||||
pub struct TypeData {
|
||||
name: String,
|
||||
kind: CustomTypeKind,
|
||||
}
|
||||
|
||||
#[derive(Debug, PartialEq, Eq, Clone, Hash)]
|
||||
pub enum CustomTypeKind {
|
||||
Struct(Vec<Type>),
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user