Example #1
0
static bool Connections_is_cyclic(const Connections* graph)
{
    rassert(graph != NULL);

    // Reset testing states
    {
        AAiter* iter = AAiter_init(AAITER_AUTO, graph->nodes);

        Device_node* node = AAiter_get_at_least(iter, "");
        while (node != NULL)
        {
            Device_node_reset_cycle_test_state(node);
            node = AAiter_get_next(iter);
        }
    }

    // Test for cycles
    {
        AAiter* iter = AAiter_init(AAITER_AUTO, graph->nodes);

        Device_node* node = AAiter_get_at_least(iter, "");
        while (node != NULL)
        {
            if (Device_node_cycle_in_path(node))
                return true;

            node = AAiter_get_next(iter);
        }
    }

    return false;
}
Example #2
0
void Event_cache_reset(Event_cache* cache)
{
    rassert(cache != NULL);

    AAiter* iter = AAiter_init(AAITER_AUTO, cache->cache);
    Event_state* es = AAiter_get_at_least(iter, "");
    while (es != NULL)
    {
        Event_state_reset(es);
        es = AAiter_get_next(iter);
    }

    return;
}
Example #3
0
void Channel_cv_state_reset(Channel_cv_state* state)
{
    rassert(state != NULL);

    const Entry* key = Entry_init(ENTRY_AUTO, "");

    AAiter* iter = AAiter_init(AAITER_AUTO, state->tree);

    Entry* entry = AAiter_get_at_least(iter, key);
    while (entry != NULL)
    {
        entry->is_set = false;
        entry->carry = false;

        entry = AAiter_get_next(iter);
    }

    return;
}
Example #4
0
bool Connections_check_connections(
        const Connections* graph, char err[DEVICE_CONNECTION_ERROR_LENGTH_MAX])
{
    rassert(graph != NULL);
    rassert(err != NULL);

    AAiter* iter = AAiter_init(AAITER_AUTO, graph->nodes);

    Device_node* node = AAiter_get_at_least(iter, "");
    while (node != NULL)
    {
        if (!Device_node_check_connections(node, err))
            return false;

        node = AAiter_get_next(iter);
    }

    return true;
}
Example #5
0
bool Input_map_is_valid(const Input_map* im, const Bit_array* existents)
{
    rassert(im != NULL);
    rassert(existents != NULL);

    const Entry* key = ENTRY_KEY(0);
    AAiter* iter = AAiter_init(AAITER_AUTO, im->map);

    const Entry* pair = AAiter_get_at_least(iter, key);
    while (pair != NULL)
    {
        if (!Bit_array_get(existents, pair->input))
            return false;

        pair = AAiter_get_next(iter);
    }

    return true;
}