~alva/zig-bare

a7ee1774fe26c4b864759a7e97307d2b0874b375 — ugla 3 months ago 8ec7aa0
Remove `main.zig` example program
2 files changed, 39 insertions(+), 45 deletions(-)

M src/bare.zig
D src/main.zig
M src/bare.zig => src/bare.zig +39 -0
@@ 511,3 511,42 @@ test "round trip union with void member" {
    const res = try d.decode(U);
    try std.testing.expectEqual(res, U{ .Hello = 123 });
}

test "README example" {
    const Foo = union(enum) {
        x: u64,
        y: []const u8,
        z: void,
    };

    const Bar = struct {
        a: f32,
        b: u8,
        c: Foo,
    };

    const x = Bar{
        .a = 3.14,
        .b = 2,
        .c = .{ .y = "hello" },
    };

    var buf: [12]u8 = undefined;
    var fbs = io.fixedBufferStream(&buf);

    var reader = fbs.reader();
    var writer = fbs.writer();

    var e = encoder(writer);
    try e.encode(x);

    try fbs.seekTo(0);

    var d = decoder(std.testing.allocator, reader);
    defer d.deinit();

    const y = try d.decode(Bar);

    std.log.info("x: {}", .{x});
    std.log.info("y: {}", .{y});
}

D src/main.zig => src/main.zig +0 -45
@@ 1,45 0,0 @@
const std = @import("std");
const fs = std.fs;
const io = std.io;
const assert = std.debug.assert;
const bare = @import("bare");
const decoder = bare.decoder;
const encoder = bare.encoder;

pub fn main() !void {
    var mem: [0x10000]u8 = undefined;
    var fba = std.heap.FixedBufferAllocator.init(&mem);
    var allocator = fba.allocator();

    const Foo = union(enum) {
        x: u64,
        y: []const u8,
        z: void,
    };

    const Bar = struct {
        a: f32,
        b: u8,
        c: Foo,
    };

    const x = Bar{
        .a = 3.14,
        .b = 2,
        .c = .{ .y = "hello" },
    };

    var buf: [12]u8 = undefined;
    var fbs = io.fixedBufferStream(&buf);
    var reader = fbs.reader();
    var writer = fbs.writer();

    var e = encoder(writer);
    try e.encode(x);
    try fbs.seekTo(0);
    var d = decoder(allocator, reader);
    defer d.deinit();
    const y = try d.decode(Bar);
    std.log.info("x: {}", .{x});
    std.log.info("y: {}", .{y});
}