From c3fd84984d4bf397ba4d302e4ab1a5502d212928 Mon Sep 17 00:00:00 2001 From: "Nurul Huda (Apon)" Date: Fri, 30 Jan 2026 03:01:04 +0600 Subject: [PATCH] chore: move all binding code to abi --- src/PlainDate.zig | 9 ---- src/PlainDateTime.zig | 9 +--- src/ZonedDateTime.zig | 12 ------ src/abi.zig | 95 +++++++++++++++++++++++++------------------ 4 files changed, 56 insertions(+), 69 deletions(-) diff --git a/src/PlainDate.zig b/src/PlainDate.zig index b4b500d..ed90107 100644 --- a/src/PlainDate.zig +++ b/src/PlainDate.zig @@ -27,15 +27,6 @@ pub const CalendarDisplay = enum { always, never, critical, - - fn toCApi(self: CalendarDisplay) abi.c.ShowCalendar { - return switch (self) { - .auto => .Auto, - .always => .Always, - .never => .Never, - .critical => .Critical, - }; - } }; pub const ToZonedDateTimeOptions = struct { diff --git a/src/PlainDateTime.zig b/src/PlainDateTime.zig index 97c7e5e..44d36e9 100644 --- a/src/PlainDateTime.zig +++ b/src/PlainDateTime.zig @@ -56,13 +56,6 @@ const FromOptions = struct { const Overflow = enum { constrain, reject, - - fn toCApi(self: Overflow) abi.c.ArithmeticOverflow { - return switch (self) { - .constrain => abi.c.ArithmeticOverflow_Constrain, - .reject => abi.c.ArithmeticOverflow_Reject, - }; - } }; const PartialDateTime = struct { @@ -144,7 +137,7 @@ const FromInit = union(enum) { plain_date: PlainDate, plain_date_time: PlainDate pub fn from(info: anytype, opts: FromOptions) !PlainDateTime { const T = @TypeOf(info); - const overflow = if (opts.overflow) |f| f.toCApi() else null; + const overflow = if (opts.overflow) |f| abi.to.toArithmeticOverflow(f) else null; if (T == PlainDateTime) return info.clone(); if (T == PlainTime) return abi.c.temporal_rs_PlainDateTime_from_partial(.{ .time = info._inner }, abi.toArithmeticOverflowOption(overflow)); if (T == PlainDate) return abi.c.temporal_rs_PlainDateTime_from_partial(.{ .date = info._inner }, abi.toArithmeticOverflowOption(overflow)); diff --git a/src/ZonedDateTime.zig b/src/ZonedDateTime.zig index 7210e3f..43a8390 100644 --- a/src/ZonedDateTime.zig +++ b/src/ZonedDateTime.zig @@ -28,8 +28,6 @@ pub const TimeZone = struct { const tz = try abi.extractResult(result); return .{ ._inner = tz }; } - - // ...existing code... }; pub const Disambiguation = enum { @@ -37,8 +35,6 @@ pub const Disambiguation = enum { earlier, later, reject, - - // ...existing code... }; pub const OffsetDisambiguation = enum { @@ -46,8 +42,6 @@ pub const OffsetDisambiguation = enum { prefer_offset, ignore_offset, reject, - - // ...existing code... }; pub const CalendarDisplay = enum { @@ -55,23 +49,17 @@ pub const CalendarDisplay = enum { always, never, critical, - - // ...existing code... }; pub const DisplayOffset = enum { auto, never, - - // ...existing code... }; pub const DisplayTimeZone = enum { auto, never, critical, - - // ...existing code... }; pub const ToStringOptions = struct { diff --git a/src/abi.zig b/src/abi.zig index 6c485c6..2a0b1bf 100644 --- a/src/abi.zig +++ b/src/abi.zig @@ -310,51 +310,66 @@ const dur = @import("Duration.zig"); const ins = @import("Instant.zig"); pub const to = struct { - pub fn toTimeZone(val: anytype) c.TimeZone { - return val._inner; - } + pub fn toArithmeticOverflow(val: anytype) c.ArithmeticOverflow { + return switch (val) { + .constrain => c.ArithmeticOverflow_Constrain, + .reject => c.ArithmeticOverflow_Reject, + }; + } - pub fn toDisambiguation(d: anytype) c.Disambiguation { - return switch (d) { - .compatible => c.Disambiguation_Compatible, - .earlier => c.Disambiguation_Earlier, - .later => c.Disambiguation_Later, - .reject => c.Disambiguation_Reject, - }; - } + pub fn toShowCalendar(val: anytype) c.ShowCalendar { + return switch (val) { + .auto => c.ShowCalendar_Auto, + .always => c.ShowCalendar_Always, + .never => c.ShowCalendar_Never, + .critical => c.ShowCalendar_Critical, + }; + } + pub fn toTimeZone(val: anytype) c.TimeZone { + return val._inner; + } - pub fn toOffsetDisambiguation(o: anytype) c.OffsetDisambiguation { - return switch (o) { - .use_offset => c.OffsetDisambiguation_Use, - .prefer_offset => c.OffsetDisambiguation_Prefer, - .ignore_offset => c.OffsetDisambiguation_Ignore, - .reject => c.OffsetDisambiguation_Reject, - }; - } + pub fn toDisambiguation(d: anytype) c.Disambiguation { + return switch (d) { + .compatible => c.Disambiguation_Compatible, + .earlier => c.Disambiguation_Earlier, + .later => c.Disambiguation_Later, + .reject => c.Disambiguation_Reject, + }; + } - pub fn calendarDisplay(cd: anytype) c.DisplayCalendar { - return switch (cd) { - .auto => c.DisplayCalendar_Auto, - .always => c.DisplayCalendar_Always, - .never => c.DisplayCalendar_Never, - .critical => c.DisplayCalendar_Critical, - }; - } + pub fn toOffsetDisambiguation(o: anytype) c.OffsetDisambiguation { + return switch (o) { + .use_offset => c.OffsetDisambiguation_Use, + .prefer_offset => c.OffsetDisambiguation_Prefer, + .ignore_offset => c.OffsetDisambiguation_Ignore, + .reject => c.OffsetDisambiguation_Reject, + }; + } - pub fn displayOffset(o: anytype) c.DisplayOffset { - return switch (o) { - .auto => c.DisplayOffset_Auto, - .never => c.DisplayOffset_Never, - }; - } + pub fn calendarDisplay(cd: anytype) c.DisplayCalendar { + return switch (cd) { + .auto => c.DisplayCalendar_Auto, + .always => c.DisplayCalendar_Always, + .never => c.DisplayCalendar_Never, + .critical => c.DisplayCalendar_Critical, + }; + } - pub fn toDisplayTimeZone(val: anytype) c.DisplayTimeZone { - return switch (val) { - .auto => c.DisplayTimeZone_Auto, - .never => c.DisplayTimeZone_Never, - .critical => c.DisplayTimeZone_Critical, - }; - } + pub fn displayOffset(o: anytype) c.DisplayOffset { + return switch (o) { + .auto => c.DisplayOffset_Auto, + .never => c.DisplayOffset_Never, + }; + } + + pub fn toDisplayTimeZone(val: anytype) c.DisplayTimeZone { + return switch (val) { + .auto => c.DisplayTimeZone_Auto, + .never => c.DisplayTimeZone_Never, + .critical => c.DisplayTimeZone_Critical, + }; + } pub fn unit(opt: ?t.Unit) ?c.Unit { return if (opt) |u| @as(c.Unit, @intCast(to.unitToCApi(u))) else null; }