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);
|
||