mirror of
https://codeberg.org/ziglang/zig.git
synced 2026-04-27 19:09:47 +03:00
feat(std.mem): add boundedOrderZ
This commit is contained in:
+7
-2
@@ -662,10 +662,15 @@ pub fn order(comptime T: type, lhs: []const T, rhs: []const T) math.Order {
|
||||
|
||||
/// Compares two many-item pointers with NUL-termination lexicographically.
|
||||
pub fn orderZ(comptime T: type, lhs: [*:0]const T, rhs: [*:0]const T) math.Order {
|
||||
return boundedOrderZ(T, lhs, rhs, std.math.maxInt(usize));
|
||||
}
|
||||
|
||||
/// Compares two many-item pointers with NUL-termination lexicographically until some specified bound.
|
||||
pub fn boundedOrderZ(comptime T: type, lhs: [*:0]const T, rhs: [*:0]const T, bound: usize) math.Order {
|
||||
if (lhs == rhs) return .eq;
|
||||
var i: usize = 0;
|
||||
while (lhs[i] == rhs[i] and lhs[i] != 0) : (i += 1) {}
|
||||
return math.order(lhs[i], rhs[i]);
|
||||
while (lhs[i] == rhs[i] and lhs[i] != 0 and i < bound) : (i += 1) {}
|
||||
return if (i < bound) math.order(lhs[i], rhs[i]) else .eq;
|
||||
}
|
||||
|
||||
test order {
|
||||
|
||||
Reference in New Issue
Block a user