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