|
|
3 روز پیش | |
|---|---|---|
| examples | 3 روز پیش | |
| src | 3 روز پیش | |
| .envrc | 1 ماه پیش | |
| .gitignore | 4 روز پیش | |
| LICENSE | 1 ماه پیش | |
| README.md | 3 روز پیش | |
| flake.lock | 1 ماه پیش | |
| flake.nix | 4 روز پیش |
TODO: tomorrow, implement more macro stuff
val test: i64 = 1 + 2*3 + 3*4
#llvm(
"%call = call i32 (ptr, ...) @printf(ptr @int.fmt, i64 %{:irname})",
test // Test variable's irname is inputted inplace or {:irname} in the llvm ir
)
class Parser {
val tokens: Arr<Token>
val cursor: Int
// :: for constructor?, under the hood so vert denne funksjonen kjørt av ein anna der self har blitt laga, allocated, idk, noko sånn. Den hook constructor funksjonen har alle members av classen og returner pointer til objektet i minne
fn::new(self, tokens: Arr<Token>) {
self.tokens = tokens
self.cursor = Int::from(0)
}
}
fn main() -> i64 {
val parser: Parser = Parser::new(etcetc...) // with hooked constructor, also puts reference counting
val parser_manually: &Parser = mem.alloc(mem.sizeof(Parser)) // will not be tracked by reference counter, the pointer address is not added to the GC's pointer track list. GC only counts addresses in it's list
*parser_manually.tokens = ...
*parser_manually.cursor = ...
mem.free(parser_manually)
// Kanskje noko sånn heller?
val allocated: Result<&OtherClass> = mem.alloc(mem.sizeof(OtherClass))
val allocated_real: &OtherClass = allocated.expect("yes!")
mem.free(allocated_real)
// Alternativ, meire generics?
val allocated: Result<&OtherClass> = mem.alloc<OtherClass>()
val allocated_real: &OtherClass = allocated.expect("Couldn't allocate memory")
return 0
}