feat: update to zig 0.11.0

dev
LeRoyce Pearson 2024-01-02 21:11:00 -07:00
parent d1ace5b48e
commit 6a7bcc493f
3 changed files with 32 additions and 25 deletions

1
.gitignore vendored
View File

@ -1 +1,2 @@
/zig-cache/
/zig-out/

View File

@ -1,17 +1,27 @@
const std = @import("std");
pub fn build(b: *std.build.Builder) void {
const target = b.standardTargetOptions(.{});
// Standard release options allow the person running `zig build` to select
// between Debug, ReleaseSafe, ReleaseFast, and ReleaseSmall.
const mode = b.standardReleaseOptions();
const optimize = b.standardOptimizeOption(.{});
const lib = b.addStaticLibrary("zig-ldtk", "src/main.zig");
lib.setBuildMode(mode);
lib.install();
const lib = b.addStaticLibrary(.{
.name = "zig-ldtk",
.root_source_file = .{ .path = "src/main.zig" },
.target = target,
.optimize = optimize,
});
b.installArtifact(lib);
const main_tests = b.addTest("src/main.zig");
main_tests.setBuildMode(mode);
const main_tests = b.addTest(.{
.root_source_file = .{ .path = "src/main.zig" },
.optimize = optimize,
.target = target,
});
const main_tests_run = b.addRunArtifact(main_tests);
const test_step = b.step("test", "Run library tests");
test_step.dependOn(&main_tests.step);
test_step.dependOn(&main_tests_run.step);
}

View File

@ -25,22 +25,19 @@ const std = @import("std");
alloc: std.mem.Allocator,
root: Root,
parser: std.json.Parser,
value_tree: std.json.ValueTree,
parsed: std.json.Parsed(std.json.Value),
pub fn parse(alloc: std.mem.Allocator, ldtk_file: []const u8) !@This() {
var this: @This() = undefined;
this.alloc = alloc;
this.parser = std.json.Parser.init(alloc, false);
this.value_tree = try this.parser.parse(ldtk_file);
this.root = try Root.fromJSON(alloc, this.value_tree.root);
this.parsed = try std.json.parseFromSlice(std.json.Value, this.alloc, ldtk_file, .{});
this.root = try Root.fromJSON(alloc, this.parsed.value);
return this;
}
pub fn deinit(this: *@This()) void {
this.root.deinit(this.alloc);
this.value_tree.deinit();
this.parser.deinit();
this.parsed.deinit();
}
/// 1. LDtk Json root
@ -176,7 +173,6 @@ pub const Level = struct {
};
}
pub fn fromJSONMany(alloc: std.mem.Allocator, levels_opt: ?std.json.Value) ![]Level {
const levels = array(levels_opt) orelse return error.InvalidLevels;
var ldtk_levels = try std.ArrayList(Level).initCapacity(alloc, levels.items.len);
@ -255,7 +251,7 @@ pub const LayerInstance = struct {
grid_list.appendAssumeCapacity(integer(int) orelse return error.InvalidInt);
}
break :grid grid_list.toOwnedSlice();
break :grid try grid_list.toOwnedSlice();
}
}
break :grid &[0]i64{};
@ -327,7 +323,7 @@ const TileInstance = struct {
pub fn fromJSON(tile_opt: ?std.json.Value) !TileInstance {
const tile = object(tile_opt) orelse return error.InvalidTileInstance;
const f = @intToEnum(FlipBits, integer(tile.get("f")) orelse return error.InvalidFlipBits);
const f = @as(FlipBits, @enumFromInt(integer(tile.get("f")) orelse return error.InvalidFlipBits));
const px = pos_from_value(tile.get("px")) orelse return error.InvalidPx;
const src = pos_from_value(tile.get("src")) orelse return error.InvalidSrc;
const t = integer(tile.get("t")) orelse return error.InvalidT;
@ -622,7 +618,7 @@ const EnumValueDefinition = struct {
pub fn object(value_opt: ?std.json.Value) ?std.json.ObjectMap {
const value = value_opt orelse return null;
return switch (value) {
.Object => |obj| obj,
.object => |obj| obj,
else => null,
};
}
@ -631,7 +627,7 @@ pub fn object(value_opt: ?std.json.Value) ?std.json.ObjectMap {
pub fn array(value_opt: ?std.json.Value) ?std.json.Array {
const value = value_opt orelse return null;
return switch (value) {
.Array => |arr| arr,
.array => |arr| arr,
else => null,
};
}
@ -640,7 +636,7 @@ pub fn array(value_opt: ?std.json.Value) ?std.json.Array {
pub fn string(value_opt: ?std.json.Value) ?[]const u8 {
const value = value_opt orelse return null;
return switch (value) {
.String => |str| str,
.string => |str| str,
else => null,
};
}
@ -660,7 +656,7 @@ pub fn string_list(alloc: std.mem.Allocator, array_opt: ?std.json.Value) ![][]co
pub fn boolean(value_opt: ?std.json.Value) ?bool {
const value = value_opt orelse return null;
return switch (value) {
.Bool => |b| b,
.bool => |b| b,
else => null,
};
}
@ -669,7 +665,7 @@ pub fn boolean(value_opt: ?std.json.Value) ?bool {
pub fn integer(value_opt: ?std.json.Value) ?i64 {
const value = value_opt orelse return null;
return switch (value) {
.Integer => |int| int,
.integer => |int| int,
else => null,
};
}
@ -678,9 +674,9 @@ pub fn integer(value_opt: ?std.json.Value) ?i64 {
fn float(value_opt: ?std.json.Value) ?f64 {
const value = value_opt orelse return null;
return switch (value) {
.Float => |float| float,
.float => |f| f,
// Integers are valid floats
.Integer => |int| @intToFloat(f64, int),
.integer => |int| @as(f64, @floatFromInt(int)),
else => null,
};
}
@ -693,7 +689,7 @@ fn float(value_opt: ?std.json.Value) ?f64 {
pub fn enum_from_value(comptime T: type, value_opt: ?std.json.Value) ?T {
const value = value_opt orelse return null;
return switch (value) {
.String => |str| std.meta.stringToEnum(T, str),
.string => |str| std.meta.stringToEnum(T, str),
else => null,
};
}