mirror of
https://github.com/Ed94/Odin.git
synced 2026-08-06 15:48:51 +00:00
@@ -83,13 +83,13 @@ Token :: struct {
|
|||||||
Is_Keyword_Proc :: #type proc(tok: ^Token) -> bool
|
Is_Keyword_Proc :: #type proc(tok: ^Token) -> bool
|
||||||
|
|
||||||
copy_token :: proc(tok: ^Token) -> ^Token {
|
copy_token :: proc(tok: ^Token) -> ^Token {
|
||||||
t := new_clone(tok^)
|
t, _ := new_clone(tok^)
|
||||||
t.next = nil
|
t.next = nil
|
||||||
return t
|
return t
|
||||||
}
|
}
|
||||||
|
|
||||||
new_eof :: proc(tok: ^Token) -> ^Token {
|
new_eof :: proc(tok: ^Token) -> ^Token {
|
||||||
t := new_clone(tok^)
|
t, _ := new_clone(tok^)
|
||||||
t.kind = .EOF
|
t.kind = .EOF
|
||||||
t.lit = ""
|
t.lit = ""
|
||||||
return t
|
return t
|
||||||
|
|||||||
+5
-4
@@ -215,13 +215,14 @@ new_aligned :: proc($T: typeid, alignment: int, allocator := context.allocator,
|
|||||||
t = (^T)(raw_data(data))
|
t = (^T)(raw_data(data))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
new_clone :: proc(data: $T, allocator := context.allocator, loc := #caller_location) -> ^T {
|
new_clone :: proc(data: $T, allocator := context.allocator, loc := #caller_location) -> (t: ^T, err: Allocator_Error) {
|
||||||
data := alloc_bytes(size_of(T), alignment, allocator, loc) or_return
|
backing := alloc_bytes(size_of(T), align_of(T), allocator, loc) or_return
|
||||||
t = (^T)(raw_data(data))
|
t = (^T)(raw_data(backing))
|
||||||
if t != nil {
|
if t != nil {
|
||||||
t^ = data
|
t^ = data
|
||||||
|
return t, nil
|
||||||
}
|
}
|
||||||
return
|
return nil, .Out_Of_Memory
|
||||||
}
|
}
|
||||||
|
|
||||||
DEFAULT_RESERVE_CAPACITY :: 16
|
DEFAULT_RESERVE_CAPACITY :: 16
|
||||||
|
|||||||
Reference in New Issue
Block a user