Project

General

Profile

Feature #1584 ยป 0085-Refactor-does_req_contradicts_reqs-req_vec_first_con.patch

Marko Lindqvist, 07/07/2025 01:45 PM

View differences:

common/actions.c
return NULL;
}
/**********************************************************************//**
Returns the first requirement in the specified requirement vector that
contradicts the specified requirement or NULL if no contradiction was
detected.
@param req the requirement that may contradict the vector
@param vec the requirement vector to look in
@return the first local DiplRel requirement.
**************************************************************************/
static struct requirement *
req_vec_first_contradiction_in_vec(const struct requirement *req,
const struct requirement_vector *vec)
{
/* If the requirement is contradicted by any requirement in the vector it
* contradicts the entire requirement vector. */
requirement_vector_iterate(vec, preq) {
if (are_requirements_contradictions(req, preq)) {
return preq;
}
} requirement_vector_iterate_end;
/* Not a singe requirement in the requirement vector is contradicted be
* the specified requirement. */
return NULL;
}
/**********************************************************************//**
Detects a local DiplRel requirement in a tile targeted action without
an explicit claimed requirement in the target reqs.
common/requirements.c
}
/**********************************************************************//**
Returns TRUE if the given requirement contradicts the given requirement
vector.
Returns the first requirement in the specified requirement vector that
contradicts the specified requirement or NULL if no contradiction was
detected.
@param req the requirement that may contradict the vector
@param vec the requirement vector to look in
@return the first local DiplRel requirement.
**************************************************************************/
bool does_req_contradicts_reqs(const struct requirement *req,
const struct requirement_vector *vec)
struct requirement *
req_vec_first_contradiction_in_vec(const struct requirement *req,
const struct requirement_vector *vec)
{
/* If the requirement is contradicted by any requirement in the vector it
* contradicts the entire requirement vector. */
requirement_vector_iterate(vec, preq) {
if (are_requirements_contradictions(req, preq)) {
return TRUE;
return preq;
}
} requirement_vector_iterate_end;
/* Not a singe requirement in the requirement vector is contradicted be
/* Not a single requirement in the requirement vector is contradicted to be
* the specified requirement. */
return FALSE;
return nullptr;
}
/**********************************************************************//**
Returns TRUE if the given requirement contradicts the given requirement
vector.
**************************************************************************/
bool does_req_contradicts_reqs(const struct requirement *req,
const struct requirement_vector *vec)
{
return req_vec_first_contradiction_in_vec(req, vec) != nullptr;
}
/**********************************************************************//**
common/requirements.h
bool req_implies_req(const struct requirement *req1,
const struct requirement *req2);
struct requirement *
req_vec_first_contradiction_in_vec(const struct requirement *req,
const struct requirement_vector *vec);
bool does_req_contradicts_reqs(const struct requirement *req,
const struct requirement_vector *vec);
    (1-1/1)