diff options
| author | Veikka Tuominen <git@vexu.eu> | 2022-06-03 14:29:24 +0300 |
|---|---|---|
| committer | Veikka Tuominen <git@vexu.eu> | 2022-06-03 14:29:24 +0300 |
| commit | 5c65b086d68280d49037ae316db0aba76fe5cd72 (patch) | |
| tree | bdaf7c0fb22c2d94b4c843e92cf9b70cfcbaf440 /src/value.zig | |
| parent | 3db4513b33425d34ad9def8af8bd52536a85fecd (diff) | |
| download | zig-5c65b086d68280d49037ae316db0aba76fe5cd72.tar.gz zig-5c65b086d68280d49037ae316db0aba76fe5cd72.zip | |
Value: implement {read,write}Value for more types
Diffstat (limited to 'src/value.zig')
| -rw-r--r-- | src/value.zig | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/src/value.zig b/src/value.zig index da8f7a2c62..a80d788894 100644 --- a/src/value.zig +++ b/src/value.zig @@ -1174,6 +1174,10 @@ pub const Value = extern union { return; } switch (ty.zigTypeTag()) { + .Void => {}, + .Bool => { + buffer[0] = @boolToInt(val.toBool()); + }, .Int => { var bigint_buffer: BigIntSpace = undefined; const bigint = val.toBigInt(&bigint_buffer, target); @@ -1291,6 +1295,14 @@ pub const Value = extern union { ) Allocator.Error!Value { const target = mod.getTarget(); switch (ty.zigTypeTag()) { + .Void => return Value.@"void", + .Bool => { + if (buffer[0] == 0) { + return Value.@"false"; + } else { + return Value.@"true"; + } + }, .Int => { if (buffer.len == 0) return Value.zero; const int_info = ty.intInfo(target); @@ -1311,7 +1323,7 @@ pub const Value = extern union { 128 => return Value.Tag.float_128.create(arena, floatReadFromMemory(f128, target, buffer)), else => unreachable, }, - .Array => { + .Array, .Vector => { const elem_ty = ty.childType(); const elem_size = elem_ty.abiSize(target); const elems = try arena.alloc(Value, @intCast(usize, ty.arrayLen())); |
