Skip to documentation
SLOP

tiny.accy.axis.roles

Reference tiny.accy axis roles

Defined in axis.

API (3)

Actions

Public operations.

Types and contracts

Public types and contracts.

No direct callersNo direct callsaxisroles
Static calls · unresolved targets: unknown · external targets: unknown.

Source

Called byCallstest sourcelib.accy.src.axis.rolestest: axis role groups form a partial...private sourcelib.accy.src.axis.rolesappearsInPriorGroupaxis.rolescheck
Static calls · unresolved targets: 0 · external targets: 0.
Called byCallstest sourcelib.accy.src.axis.rolestest: axis role groups form a partial...private sourcelib.accy.src.axis.rolesappearsInPriorGroupaxis.rolesgroupsOverlap
Static calls · unresolved targets: 0 · external targets: 0.

Source: lib/accy/src/axis/roles.zig

zig
const std = @import("std");pub const Failure = enum {    out_of_range,    duplicate,};fn appearsInPriorGroup(    groups: []const []const i64,    group_index: usize,    axis: i64,) bool {    for (groups[0..group_index]) |prior| {        for (prior) |seen| {            if (seen == axis) return true;        }    }    return false;}pub fn check(    rank: usize,    groups: []const []const i64,) ?Failure {    for (groups, 0..) |group, group_index| {        for (group, 0..) |axis, axis_index| {            const index = std.math.cast(usize, axis) orelse                return .out_of_range;            if (index >= rank) return .out_of_range;            if (appearsInPriorGroup(groups, group_index, axis)) {                return .duplicate;            }            for (group[0..axis_index]) |seen| {                if (seen == axis) return .duplicate;            }        }    }    return null;}pub fn groupsOverlap(groups: []const []const i64) bool {    for (groups, 0..) |group, group_index| {        for (group) |axis| {            if (appearsInPriorGroup(groups, group_index, axis)) return true;        }    }    return false;}test "axis role groups form a partial permutation" {    try std.testing.expect(check(4, &.{ &.{ 2, 0 }, &.{3} }) == null);    try std.testing.expectEqual(        Failure.out_of_range,        check(2, &.{&.{-1}}).?,    );    try std.testing.expectEqual(        Failure.out_of_range,        check(2, &.{&.{2}}).?,    );    try std.testing.expectEqual(        Failure.duplicate,        check(2, &.{&.{ 0, 0 }}).?,    );    try std.testing.expectEqual(        Failure.duplicate,        check(2, &.{ &.{0}, &.{0} }).?,    );    try std.testing.expect(!groupsOverlap(&.{ &.{ 2, 0 }, &.{3} }));    try std.testing.expect(groupsOverlap(&.{ &.{0}, &.{0} }));}

Source: lib/accy/src/axis/root.zig:1

zig
pub const roles = @import("roles.zig");

Audit

Definitions4
Public names4
Members2
Version26.7.0
Revisiondaab053ee433