diff --git a/src/compareFnRange.zig b/src/compareFnRange.zig new file mode 100644 index 0000000000000000000000000000000000000000..2d68b7018a95014d5dea488b622684bb3ab1ea87 --- /dev/null +++ b/src/compareFnRange.zig @@ -0,0 +1,13 @@ +const std = @import("std"); +const extras = @import("./lib.zig"); + +pub fn compareFnRange(N: type, H: type, lower: std.meta.FieldEnum(H), upper: std.meta.FieldEnum(H)) fn (N, H) std.math.Order { + const S = struct { + pub fn compare(needle: N, row: H) std.math.Order { + if (needle < @field(row, @tagName(lower))) return .lt; + if (needle > @field(row, @tagName(upper))) return .gt; + return .eq; + } + }; + return S.compare; +} diff --git a/src/lib.zig b/src/lib.zig index 3dcf2a735a4505daa2a8d62a91021ebb273d9306..d5e3371a050a41637d89f60e203ffe83e420baf2 100644 --- a/src/lib.zig +++ b/src/lib.zig @@ -116,3 +116,4 @@ pub usingnamespace @import("./swapMany.zig"); pub usingnamespace @import("./ManyArrayList.zig"); pub usingnamespace @import("./compareFnBasic.zig"); pub usingnamespace @import("./compareFnField.zig"); +pub usingnamespace @import("./compareFnRange.zig");