summaryrefslogtreecommitdiff
path: root/_tests/test.zig
blob: 21e8c14a4d3698f5f1624e74d0dda544c97192ab (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
const std = @import("std");

const List = std.ArrayListAlignedUnmanaged;

const MyList = List(u8, .fromByteUnits(1 << 20));

pub fn main() !u8 {
    const alloc = std.heap.smp_allocator;

    var my_list = try MyList.initCapacity(alloc, 4);
    try my_list.append(alloc, 0);
    try my_list.append(alloc, 1);
    try my_list.append(alloc, 2);
    try my_list.append(alloc, 3);

    std.debug.print("addrs: {}, {}, {}, {}\n", .{
        &my_list.items[0],
        &my_list.items[1],
        &my_list.items[2],
        &my_list.items[3],
    });

    return 0;
}

// pub fn main() u8 {
//     const y: [3]u64 = .{ 1, 2, 3 };
//     const x: struct { u8, u64, u8 } = y;
//     @import("std").debug.print("{}\n", .{x[0] + x[1] + x[2]});

//     std.debug.print("{}\n", .{@sizeOf(struct { u64, ?u8 })});

//     return while (true) if (true) break 1;

//     const x: ?*u64 = null;
//     const y: ?*u32 = @ptrCast(x);
//     _ = y;
// }

// const x: ?u8 = 5;
// if (x == null) {
//     return 1;
// } else |val| {
//     return val;
// }
// var list = std.ArrayList(u8).init(std.heap.smp_allocator);
// try parseUniHex("1f4a9", &list);
// std.debug.print("{s}\n", .{list.items});

// fn parseUniHex(
//     str: []const u8,
//     s: *std.ArrayList(u8),
// ) !void {
//     var uc: u21 = parseHexDigit1(str[0]);
//     for (str[1..]) |c| {
//         uc = try std.math.shlExact(u21, uc, 4);
//         uc |= parseHexDigit1(c);
//     }

//     std.debug.print("{u}\n", .{uc});

//     const n = try std.unicode.utf8CodepointSequenceLength(uc);
//     const buf = try s.addManyAsSlice(n);
//     _ = try std.unicode.utf8Encode(uc, buf);
// }

// fn parseHexByte1(h1: u8, h2: u8) u8 {
//     const hi = parseHexDigit1(h1);
//     const lo = parseHexDigit1(h2);
//     return hi << 4 | lo;
// }

// fn parseHexDigit1(c: u8) u8 {
//     return switch (c) {
//         '0'...'9' => c - '0',
//         'A'...'F' => c - 'A' + 10,
//         'a'...'f' => c - 'a' + 10,
//         else => @panic(""),
//     };
// }

// fn parseHexByte2(h1: u8, h2: u8) u8 {
//     const hi: u8 = parseHexDigit2(h1);
//     const lo = parseHexDigit2(h2);
//     return hi << 4 | lo;
// }

// fn parseHexDigit2(c: u8) u4 {
//     return @intCast(switch (c) {
//         '0'...'9' => c - '0',
//         'A'...'F' => c - 'A' + 10,
//         'a'...'f' => c - 'a' + 10,
//         else => @panic(""),
//     });
// }

// fn parseUniHex1(str: []const u8) !u21 {
//     var uc: u21 = parseHexDigit1(str[0]);
//     for (str[1..]) |c| {
//         uc = try std.math.shlExact(u21, uc, 4);
//         uc |= parseHexDigit1(c);
//     }
//     return uc;
// }

// fn parseUniHex2(str: []const u8) !u21 {
//     var uc: u21 = parseHexDigit2(str[0]);
//     for (str[1..]) |c| {
//         uc = try std.math.shlExact(u21, uc, 4);
//         uc |= parseHexDigit2(c);
//     }
//     return uc;
// }