Feature #1584 ยป 0085-Refactor-does_req_contradicts_reqs-req_vec_first_con.patch
| 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);
|
||