using on indexable field; Auto deref for (Index|Slice)Expr

This commit is contained in:
Ginger Bill
2016-09-29 00:42:26 +01:00
parent 6e39a42c8a
commit 04b5d8c132
6 changed files with 195 additions and 128 deletions

View File

@@ -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)
}