mirror of
https://github.com/odin-lang/Odin.git
synced 2026-01-09 22:42:46 +00:00
using on indexable field; Auto deref for (Index|Slice)Expr
This commit is contained in:
@@ -3,59 +3,17 @@
|
||||
#import "hash.odin"
|
||||
#import "mem.odin"
|
||||
|
||||
main :: proc() {
|
||||
{ // New Standard Library stuff
|
||||
s := "Hello"
|
||||
fmt.println(s,
|
||||
utf8.valid_string(s),
|
||||
hash.murmur64(s.data, s.count))
|
||||
|
||||
// utf8.odin
|
||||
// hash.odin
|
||||
// - crc, fnv, fnva, murmur
|
||||
// mem.odin
|
||||
// - Custom allocators
|
||||
// - Helpers
|
||||
}
|
||||
|
||||
{
|
||||
arena: mem.Arena
|
||||
mem.init_arena_from_context(^arena, mem.megabytes(16)) // Uses default allocator
|
||||
defer mem.free_arena(^arena)
|
||||
|
||||
push_allocator mem.arena_allocator(^arena) {
|
||||
x := new(int)
|
||||
x^ = 1337
|
||||
|
||||
fmt.println(x^)
|
||||
}
|
||||
|
||||
/*
|
||||
push_allocator x {
|
||||
...
|
||||
}
|
||||
|
||||
is equivalent to this:
|
||||
|
||||
{
|
||||
prev_allocator := current_context().allocator
|
||||
current_context().allocator = x
|
||||
defer current_context().allocator = prev_allocator
|
||||
|
||||
...
|
||||
}
|
||||
*/
|
||||
|
||||
// You can also "push" a context
|
||||
|
||||
c := current_context()
|
||||
c.allocator = mem.arena_allocator(^arena)
|
||||
|
||||
push_context c {
|
||||
x := new(int)
|
||||
x^ = 365
|
||||
|
||||
fmt.println(x^)
|
||||
}
|
||||
}
|
||||
A :: struct { using e: [12]int }
|
||||
Vector2 :: raw_union {
|
||||
using _xy: struct #ordered { x, y: f32 }
|
||||
using v: {2}f32
|
||||
e: [2]f32
|
||||
}
|
||||
|
||||
main :: proc() {
|
||||
v: Vector2
|
||||
v.x = 123
|
||||
v[1] = 321
|
||||
fmt.println(v)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user