A special condition for testing against action patterns.

§1.

parse_node *AConditions::new_action_TEST_VALUE(action_pattern *ap, wording W) {
    if (ap == NULL) internal_error("null action pattern");
    parse_node *spec = Node::new_with_words(TEST_VALUE_NT, W);
    spec->down = ARvalues::from_action_pattern(ap);
    Node::set_text(spec->down, W);
    return spec;
}

int AConditions::is_action_TEST_VALUE(parse_node *spec) {
    if ((Node::is(spec, TEST_VALUE_NT)) &&
        ((ARvalues::to_action_pattern(spec->down)) ||
        (ARvalues::to_explicit_action(spec->down)))) return TRUE;
    return FALSE;
}

parse_node *AConditions::action_tested(parse_node *spec) {
    if (AConditions::is_action_TEST_VALUE(spec) == FALSE)
        internal_error("action improperly extracted");
    return spec->down;
}