Skip to content

Commit 7724870

Browse files
committed
[ci skip] zig api: Refactor *.Handle structs into opaques
1 parent 9ce315f commit 7724870

File tree

2 files changed

+180
-220
lines changed

2 files changed

+180
-220
lines changed

bindings/zig/examples/zig_api.zig

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ const lm = @import("libremidi");
33

44

55
const EnumeratedPorts = extern struct {
6-
in_ports: [256]lm.midi.in.port.Handle = @splat(.{}),
7-
out_ports: [256]lm.midi.out.port.Handle = @splat(.{}),
6+
in_ports: [256]?*lm.midi.In.Port = @splat(null),
7+
out_ports: [256]?*lm.midi.Out.Port = @splat(null),
88
in_port_count: usize = 0,
99
out_port_count: usize = 0,
1010
};
@@ -16,7 +16,7 @@ pub fn main() !void {
1616

1717
var e: EnumeratedPorts = .{};
1818

19-
const observer: lm.observer.Handle = try .init(&.{
19+
const observer: *lm.Observer = try .init(&.{
2020
.track_hardware = true,
2121
.track_virtual = true,
2222
.track_any = true,
@@ -36,7 +36,7 @@ pub fn main() !void {
3636

3737
try enumerate_ports(observer, &e);
3838

39-
const midi_in: lm.midi.in.Handle = try .init(&.{
39+
const midi_in: *lm.midi.In = try .init(&.{
4040
.version = .midi1,
4141
.port = .{ .input = e.in_ports[0] },
4242
.msg_callback = .{ .on_midi1_message = .{ .callback = on_midi1_message } },
@@ -46,7 +46,7 @@ pub fn main() !void {
4646
});
4747
defer midi_in.free();
4848

49-
const midi_out: lm.midi.out.Handle = try .init(&.{
49+
const midi_out: *lm.midi.Out = try .init(&.{
5050
.version = .midi1,
5151
.virtual_port = true,
5252
.port_name = "my-app",
@@ -60,29 +60,29 @@ pub fn main() !void {
6060
for (0..99) |_| std.time.sleep(1e9); // sleep 1s, 100 times
6161
}
6262

63-
fn free_observer(observer: lm.observer.Handle, e: *EnumeratedPorts) void {
63+
fn free_observer(observer: *lm.Observer, e: *EnumeratedPorts) void {
6464

65-
for (e.in_ports) |port| port.free();
66-
for (e.out_ports) |port| port.free();
65+
for (e.in_ports) |maybe_port| if (maybe_port) |port| port.free();
66+
for (e.out_ports) |maybe_port| if (maybe_port) |port| port.free();
6767

6868
observer.free();
6969
}
7070

71-
export fn on_input_port_found(ctx: ?*anyopaque, port: lm.midi.in.port.Handle) callconv(.C) void {
71+
export fn on_input_port_found(ctx: ?*anyopaque, port: *lm.midi.In.Port) callconv(.C) void {
7272

7373
std.debug.print("input: {s}\n", .{ port.getName() catch "" });
7474

7575
var e: *EnumeratedPorts = @ptrCast(@alignCast(ctx));
76-
e.in_ports[e.in_port_count] = port.clone() catch lm.midi.in.port.Handle{};
76+
e.in_ports[e.in_port_count] = port.clone() catch null;
7777
e.in_port_count += 1;
7878
}
7979

80-
export fn on_output_port_found(ctx: ?*anyopaque, port: lm.midi.out.port.Handle) callconv(.C) void {
80+
export fn on_output_port_found(ctx: ?*anyopaque, port: *lm.midi.Out.Port) callconv(.C) void {
8181

8282
std.debug.print("output: {s}\n", .{ port.getName() catch "" });
8383

8484
var e: *EnumeratedPorts = @ptrCast(@alignCast(ctx));
85-
e.out_ports[e.out_port_count] = port.clone() catch lm.midi.out.port.Handle{};
85+
e.out_ports[e.out_port_count] = port.clone() catch null;
8686
e.out_port_count += 1;
8787
}
8888

@@ -102,7 +102,7 @@ fn on_midi2_message(ctx: ?*anyopaque, ts: lm.Timestamp, msg: [*]const lm.midi.v2
102102
std.debug.print("0x{x:02} 0x{x:02} 0x{x:02}\n", .{ msg[0], msg[1], msg[2] });
103103
}
104104

105-
fn enumerate_ports(observer: lm.observer.Handle, e: *EnumeratedPorts) !void {
105+
fn enumerate_ports(observer: *lm.Observer, e: *EnumeratedPorts) !void {
106106
try observer.enumerateInputPorts(e, on_input_port_found);
107107
try observer.enumerateOutputPorts(e, on_output_port_found);
108108
}

0 commit comments

Comments
 (0)