tiny.smg.analysis.paging
Defined in analysis.
API (3)
Actions
Public operations.
Source
Source: tools/smg/src/analysis/paging.zig
zig
const std = @import("std");pub fn sliceEnd(len: usize, stop: i64) usize { if (stop >= 0) { const value = std.math.cast(usize, stop) orelse return len; return @min(value, len); } if (stop == std.math.minInt(i64)) return 0; const drop = std.math.cast(usize, -stop) orelse return 0; if (drop >= len) return 0; return len - drop;}pub fn lengthGreaterThanStop(len: usize, stop: i64) bool { return sliceEnd(len, stop) < len;}pub fn remainingAfterStop(len: usize, stop: i64) usize { return len - sliceEnd(len, stop);}test "slice end clamps stops" { try std.testing.expectEqual(@as(usize, 5), sliceEnd(10, 5)); try std.testing.expectEqual(@as(usize, 10), sliceEnd(10, 15)); try std.testing.expectEqual(@as(usize, 7), sliceEnd(10, -3)); try std.testing.expectEqual(@as(usize, 0), sliceEnd(10, -10)); try std.testing.expectEqual(@as(usize, 0), sliceEnd(10, std.math.minInt(i64))); try std.testing.expectEqual(@as(usize, 10), sliceEnd(10, std.math.maxInt(i64)));}test "remaining count matches slice end" { try std.testing.expect(!lengthGreaterThanStop(10, 10)); try std.testing.expect(lengthGreaterThanStop(10, 9)); try std.testing.expect(lengthGreaterThanStop(10, -3)); try std.testing.expect(!lengthGreaterThanStop(0, -3)); try std.testing.expectEqual(@as(usize, 5), remainingAfterStop(10, 5)); try std.testing.expectEqual(@as(usize, 3), remainingAfterStop(10, -3)); try std.testing.expectEqual(@as(usize, 10), remainingAfterStop(10, -20)); try std.testing.expectEqual(@as(usize, 10), remainingAfterStop(10, std.math.minInt(i64))); try std.testing.expectEqual(@as(usize, 0), remainingAfterStop(10, std.math.maxInt(i64)));}Source: tools/smg/src/analysis/root.zig:4
zig
pub const paging = @import("paging.zig");Audit
| Definitions | 4 |
|---|---|
| Public names | 4 |
| Members | 0 |
| Version | 26.7.0 |
| Revision | daab053ee433 |