Feature #1475 ยป 0098-metaknowledge.c-Replace-NULL-with-nullptr.patch
common/metaknowledge.c | ||
---|---|---|
Is an evaluation of the requirement accurate when pov_player evaluates
|
||
it?
|
||
context and other_context may be NULL. This is equivalent to passing
|
||
context and other_context may be nullptr. This is equivalent to passing
|
||
empty contexts.
|
||
TODO: Move the data to a data file. That will
|
||
... | ... | |
const struct requirement *req,
|
||
const enum req_problem_type prob_type)
|
||
{
|
||
fc_assert_ret_val_msg(NULL != pov_player, FALSE, "No point of view");
|
||
fc_assert_ret_val_msg(pov_player != nullptr, FALSE, "No point of view");
|
||
if (context == NULL) {
|
||
if (context == nullptr) {
|
||
context = req_context_empty();
|
||
}
|
||
if (other_context == NULL) {
|
||
if (other_context == nullptr) {
|
||
other_context = req_context_empty();
|
||
}
|
||
... | ... | |
|| req->source.kind == VUT_MINHP) {
|
||
switch (req->range) {
|
||
case REQ_RANGE_LOCAL:
|
||
if (context->unit == NULL) {
|
||
if (context->unit == nullptr) {
|
||
/* The unit may exist but not be passed when the problem type is
|
||
* RPT_POSSIBLE. */
|
||
return prob_type == RPT_CERTAIN;
|
||
... | ... | |
if (req->source.kind == VUT_UNITSTATE) {
|
||
fc_assert_ret_val_msg(req->range == REQ_RANGE_LOCAL, FALSE, "Wrong range");
|
||
if (context->unit == NULL) {
|
||
if (context->unit == nullptr) {
|
||
/* The unit may exist but not be passed when the problem type is
|
||
* RPT_POSSIBLE. */
|
||
return prob_type == RPT_CERTAIN;
|
||
... | ... | |
if (req->source.kind == VUT_MINMOVES) {
|
||
fc_assert_ret_val_msg(req->range == REQ_RANGE_LOCAL, FALSE, "Wrong range");
|
||
if (context->unit == NULL) {
|
||
if (context->unit == nullptr) {
|
||
/* The unit may exist but not be passed when the problem type is
|
||
* RPT_POSSIBLE. */
|
||
return prob_type == RPT_CERTAIN;
|
||
... | ... | |
fc_assert_ret_val_msg(req->range == REQ_RANGE_LOCAL,
|
||
FALSE, "Wrong range");
|
||
if (context->unit == NULL) {
|
||
if (context->unit == nullptr) {
|
||
/* The unit may exist but not be passed when the problem type is
|
||
* RPT_POSSIBLE. */
|
||
return prob_type == RPT_CERTAIN;
|
||
... | ... | |
|| req->source.kind == VUT_DIPLREL_UNITANY_O) {
|
||
switch (req->range) {
|
||
case REQ_RANGE_LOCAL:
|
||
if (other_context->player == NULL
|
||
|| context->player == NULL) {
|
||
if (other_context->player == nullptr
|
||
|| context->player == nullptr) {
|
||
/* The two players may exist but not be passed when the problem
|
||
* type is RPT_POSSIBLE. */
|
||
return prob_type == RPT_CERTAIN;
|
||
... | ... | |
/* TODO: Non symmetric diplomatic relationships. */
|
||
break;
|
||
case REQ_RANGE_PLAYER:
|
||
if (context->player == NULL) {
|
||
if (context->player == nullptr) {
|
||
/* The target player may exist but not be passed when the problem
|
||
* type is RPT_POSSIBLE. */
|
||
return prob_type == RPT_CERTAIN;
|
||
... | ... | |
}
|
||
if (req->source.kind == VUT_MINSIZE) {
|
||
if (context->city == NULL) {
|
||
if (context->city == nullptr) {
|
||
/* The city may exist but not be passed when the problem type is
|
||
* RPT_POSSIBLE. */
|
||
return prob_type == RPT_CERTAIN;
|
||
... | ... | |
if (req->source.kind == VUT_CITYTILE) {
|
||
struct city *pcity;
|
||
if (context->city == NULL) {
|
||
if (context->city == nullptr) {
|
||
switch (req->source.value.citytile) {
|
||
case CITYT_CENTER:
|
||
case CITYT_SAME_CONTINENT:
|
||
... | ... | |
}
|
||
}
|
||
if (context->tile == NULL) {
|
||
if (context->tile == nullptr) {
|
||
/* The tile may exist but not be passed when the problem type is
|
||
* RPT_POSSIBLE. */
|
||
return prob_type == RPT_CERTAIN;
|
||
... | ... | |
/* The only legal range when this was written was local. */
|
||
fc_assert(req->range == REQ_RANGE_LOCAL);
|
||
if (context->city == NULL) {
|
||
if (context->city == nullptr) {
|
||
/* RPT_CERTAIN: Can't be. No city to contain it.
|
||
* RPT_POSSIBLE: A city like that may exist but not be passed. */
|
||
return prob_type == RPT_CERTAIN;
|
||
... | ... | |
return FALSE;
|
||
case REQ_RANGE_CITY:
|
||
case REQ_RANGE_LOCAL:
|
||
if (context->city == NULL) {
|
||
if (context->city == nullptr) {
|
||
/* RPT_CERTAIN: Can't be. No city to contain it.
|
||
* RPT_POSSIBLE: A city like that may exist but not be passed. */
|
||
return prob_type == RPT_CERTAIN;
|
||
... | ... | |
/* No way to know if a city has an improvement */
|
||
return FALSE;
|
||
case REQ_RANGE_TILE:
|
||
if (context->tile == NULL) {
|
||
if (context->tile == nullptr) {
|
||
/* RPT_CERTAIN: Can't be. No tile to contain it.
|
||
* RPT_POSSIBLE: A tile city like that may exist but not be passed. */
|
||
return prob_type == RPT_CERTAIN;
|
||
... | ... | |
if (req->source.kind == VUT_NATION
|
||
|| req->source.kind == VUT_NATIONGROUP) {
|
||
if (context->player == NULL
|
||
if (context->player == nullptr
|
||
&& (req->range == REQ_RANGE_PLAYER
|
||
|| req->range == REQ_RANGE_TEAM
|
||
|| req->range == REQ_RANGE_ALLIANCE)) {
|
||
... | ... | |
if (req->source.kind == VUT_ADVANCE || req->source.kind == VUT_TECHFLAG) {
|
||
if (req->range == REQ_RANGE_PLAYER) {
|
||
if (context->player == NULL) {
|
||
if (context->player == nullptr) {
|
||
/* The player (that may or may not possess the tech) may exist but
|
||
* not be passed when the problem type is RPT_POSSIBLE. */
|
||
return prob_type == RPT_CERTAIN;
|
||
... | ... | |
if (req->source.kind == VUT_GOVERNMENT) {
|
||
if (req->range == REQ_RANGE_PLAYER) {
|
||
if (context->player == NULL) {
|
||
if (context->player == nullptr) {
|
||
/* The player (that may or may not possess the tech) may exist but
|
||
* not be passed when the problem type is RPT_POSSIBLE. */
|
||
return prob_type == RPT_CERTAIN;
|
||
... | ... | |
}
|
||
if (req->source.kind == VUT_MAXTILEUNITS) {
|
||
if (context->tile == NULL) {
|
||
if (context->tile == nullptr) {
|
||
/* The tile may exist but not be passed when the problem type is
|
||
* RPT_POSSIBLE. */
|
||
return prob_type == RPT_CERTAIN;
|
||
... | ... | |
|| req->source.kind == VUT_EXTRAFLAG
|
||
|| req->source.kind == VUT_ROADFLAG) {
|
||
if (req->range == REQ_RANGE_LOCAL) {
|
||
if (context->extra == NULL) {
|
||
if (context->extra == nullptr) {
|
||
/* The extra may exist but not be passed when the problem type is
|
||
* RPT_POSSIBLE. */
|
||
return prob_type == RPT_CERTAIN;
|
||
... | ... | |
|| req->source.kind == VUT_EXTRA
|
||
|| req->source.kind == VUT_EXTRAFLAG
|
||
|| req->source.kind == VUT_ROADFLAG) {
|
||
if (context->tile == NULL) {
|
||
if (context->tile == nullptr) {
|
||
/* The tile may exist but not be passed when the problem type is
|
||
* RPT_POSSIBLE. */
|
||
return prob_type == RPT_CERTAIN;
|
||
... | ... | |
}
|
||
if (req->source.kind == VUT_MAX_REGION_TILES) {
|
||
if (context->tile == NULL) {
|
||
if (context->tile == nullptr) {
|
||
/* The tile may exist but not be passed when the problem type is
|
||
* RPT_POSSIBLE. */
|
||
return prob_type == RPT_CERTAIN;
|
||
... | ... | |
if (req->source.kind == VUT_TILE_REL) {
|
||
enum known_type needed;
|
||
if (context->tile == NULL || other_context->tile == NULL) {
|
||
if (context->tile == nullptr || other_context->tile == nullptr) {
|
||
/* The tile may exist but not be passed when the problem type is
|
||
* RPT_POSSIBLE. */
|
||
return prob_type == RPT_CERTAIN;
|
||
... | ... | |
/**********************************************************************//**
|
||
Evaluate a single requirement given pov_player's knowledge.
|
||
context and other_context may be NULL. This is equivalent to passing
|
||
context and other_context may be nullptr. This is equivalent to passing
|
||
empty contexts.
|
||
Note: Assumed to use pov_player's data.
|
||
... | ... | |
/**********************************************************************//**
|
||
Evaluate a requirement vector given pov_player's knowledge.
|
||
context and other_context may be NULL. This is equivalent to passing
|
||
context and other_context may be nullptr. This is equivalent to passing
|
||
empty contexts.
|
||
Note: Assumed to use pov_player's data.
|