Project

General

Profile

Feature #2378 ยป 0085-techtools.c-Replace-NULL-with-nullptr.patch

Marko Lindqvist, 10/17/2026 10:25 PM

View differences:

server/techtools.c
/************************************************************************//**
Emit script signal(s) for player/team learning new tech.
originating_plr is the player whose action caused this; may be NULL, and
is only used to order the emission of the signals.
originating_plr is the player whose action caused this; may be nullptr,
and is only used to order the emission of the signals.
****************************************************************************/
void script_tech_learned(struct research *presearch,
struct player *originating_plr, struct advance *tech,
......
research_pretty_name(research, research_name, sizeof(research_name));
/* Players will be notified when new tech is chosen. */
notify_research_embassies
(research, NULL, E_TECH_EMBASSY, ftc_server,
(research, nullptr, E_TECH_EMBASSY, ftc_server,
_("The %s have researched %s."),
research_name,
research_advance_name_translation(research, tech));
......
/* Do all the updates needed after finding new tech. */
found_new_tech(research, tech, TRUE, TRUE);
script_tech_learned(research, NULL, advance_by_number(tech), "researched");
script_tech_learned(research, nullptr, advance_by_number(tech),
"researched");
}
/************************************************************************//**
......
astr_init(&effects);
get_effect_list_req_text(plist, &effects);
notify_player(pplayer, NULL, E_TECH_GAIN, ftc_server,
notify_player(pplayer, nullptr, E_TECH_GAIN, ftc_server,
/* TRANS: Tech from source of an effect
* (Great Library) */
Q_("?fromeffect:%s acquired from %s!"),
......
advance_name,
player_name(pplayer),
astr_str(&effects));
notify_research_embassies(plr_research, NULL, E_TECH_EMBASSY, ftc_server,
notify_research_embassies(plr_research, nullptr, E_TECH_EMBASSY, ftc_server,
/* TRANS: Tech from source of an effect
* (Great Library) */
Q_("?fromeffect:The %s have acquired %s from %s."),
......
}
/************************************************************************//**
Send research info for 'presearch' to 'dest'. 'dest' can be NULL to send
Send research info for 'presearch' to 'dest'. 'dest' can be nullptr to send
to all established connections.
****************************************************************************/
void send_research_info(const struct research *presearch,
......
struct packet_unknown_research unknown_info;
const struct player *pplayer;
fc_assert_ret(NULL != presearch);
if (NULL == dest) {
fc_assert_ret(presearch != nullptr);
if (dest == nullptr) {
dest = game.est_connections;
}
......
conn_list_iterate(dest, pconn) {
pplayer = conn_get_player(pconn);
if (NULL != pplayer) {
if (pplayer != nullptr) {
if (presearch == research_get(pplayer)) {
/* Case research owner. */
send_packet_research_info(pconn, &full_info);
......
if (!is_future_tech(tech_found)) {
#ifndef FREECIV_NDEBUG
fc_assert(NULL != vap);
fc_assert(vap != nullptr);
fc_assert(TECH_KNOWN != research_invention_state(presearch, tech_found));
#endif /* FREECIV_NDEBUG */
......
/* Alert the owners of any wonders that have been made obsolete */
improvement_iterate(pimprove) {
requirement_vector_iterate(&pimprove->obsolete_by, pobs) {
struct player *city_owner_player = NULL;
struct player *city_owner_player = nullptr;
bool is_obsolete = FALSE;
if (is_great_wonder(pimprove)) {
......
&& pobs->source.value.advance == vap
&& pobs->present) {
bool is_range_ok = FALSE;
struct player *tech_player =
player_by_number(research_number(presearch));
struct team *tech_team = NULL;
struct player *tech_player
= player_by_number(research_number(presearch));
struct team *tech_team = nullptr;
/* research owner is a team if shared research is enabled */
/* Research owner is a team if shared research is enabled */
if (game.info.team_pooled_research) {
tech_team = team_by_number(research_number(presearch));
}
......
break;
}
if (is_range_ok) {
notify_player(city_owner_player, NULL, E_WONDER_OBSOLETE,
notify_player(city_owner_player, nullptr, E_WONDER_OBSOLETE,
ftc_server,
_("Discovery of %s OBSOLETES %s in %s!"),
research_advance_name_translation
......
}
/* Inform players about their new tech. */
send_research_info(presearch, NULL);
send_research_info(presearch, nullptr);
if (was_first) {
/* Inform all players about new global advances to give them a
* chance for obsolete buildings. */
send_game_info(NULL);
send_game_info(nullptr);
}
/* Make proper changes for all players. Use shuffled order, in case
......
/* As this function can be recursive, we need to print the messages
* before really picking the new technology. */
if (A_UNSET != next_tech) {
notify_research(presearch, NULL, E_TECH_LEARNED, ftc_server,
notify_research(presearch, nullptr, E_TECH_LEARNED, ftc_server,
_("Learned %s. Our scientists focus on %s; "
"goal is %s."),
advance_name,
......
}
if (A_UNSET == next_tech) {
notify_research(presearch, NULL, E_TECH_LEARNED, ftc_server,
notify_research(presearch, nullptr, E_TECH_LEARNED, ftc_server,
_("Learned %s. Scientists "
"do not know what to research next."),
advance_name);
} else {
notify_research(presearch, NULL, E_TECH_LEARNED, ftc_server,
notify_research(presearch, nullptr, E_TECH_LEARNED, ftc_server,
_("Learned %s. Scientists choose to research %s."),
advance_name,
research_advance_name_translation(presearch,
......
radv_name = research_advance_name_translation(presearch, additional_tech);
give_immediate_free_tech(presearch, additional_tech);
if (advance_by_number(tech_found)->bonus_message != NULL
if (advance_by_number(tech_found)->bonus_message != nullptr
&& additional_tech != A_UNSET) {
notify_research(presearch, NULL, E_TECH_GAIN, ftc_server,
notify_research(presearch, nullptr, E_TECH_GAIN, ftc_server,
_(advance_by_number(tech_found)->bonus_message),
radv_name);
} else if (additional_tech != A_UNSET) {
/* FIXME: "your" when it was just civilization of one of the players
* sharing the research. */
notify_research(presearch, NULL, E_TECH_GAIN, ftc_server,
notify_research(presearch, nullptr, E_TECH_GAIN, ftc_server,
_("Great scientists from all the "
"world join your civilization: you learn "
"%s immediately."), radv_name);
}
/* TODO: Ruleset should be able to customize this message too */
notify_research_embassies(presearch, NULL, E_TECH_EMBASSY, ftc_server,
notify_research_embassies(presearch, nullptr, E_TECH_EMBASSY, ftc_server,
_("%s acquire %s as a result of learning %s."),
research_name, radv_name, advance_name);
}
......
research_tech_lost(research, tech);
/* Make notification after losing the research, in case it is
* a future tech (for getting the right tech number). */
notify_research(research, NULL, E_TECH_LOST, ftc_server,
notify_research(research, nullptr, E_TECH_LOST, ftc_server,
_("Insufficient science output. We lost %s."),
research_advance_name_translation(research, tech));
}
......
static inline struct government *
pick_random_government(struct player *pplayer)
{
struct government *picked = NULL;
struct government *picked = nullptr;
int gov_nb = 0;
governments_iterate(pgov) {
......
picked = pgov;
}
} governments_iterate_end;
fc_assert(NULL != picked);
fc_assert(picked != nullptr);
return picked;
}
......
research_update(presearch);
/* Notify after decreasing the future tech counter, to get the right
* tech number in the message. */
notify_research_embassies(presearch, NULL, E_TECH_EMBASSY, ftc_server,
notify_research_embassies(presearch, nullptr, E_TECH_EMBASSY, ftc_server,
_("The %s have lost %s."),
research_name,
research_advance_name_translation(presearch,
tech));
/* Inform players about their technology loss. */
send_research_info(presearch, NULL);
send_research_info(presearch, nullptr);
return;
}
fc_assert_ret(valid_advance_by_number(tech));
notify_research_embassies(presearch, NULL, E_TECH_EMBASSY, ftc_server,
notify_research_embassies(presearch, nullptr, E_TECH_EMBASSY, ftc_server,
/* TRANS: technology loss */
_("The %s have lost %s."),
research_name,
......
advance_rule_name(advance_by_number(tech)));
/* Inform players about their technology loss. */
send_research_info(presearch, NULL);
send_research_info(presearch, nullptr);
research_players_iterate(presearch, pplayer) {
/* Check government. */
......
* available government. */
struct government *pgov = pick_random_government(pplayer);
notify_player(pplayer, NULL, E_NEW_GOVERNMENT, ftc_server,
notify_player(pplayer, nullptr, E_NEW_GOVERNMENT, ftc_server,
_("The required technology for our government '%s' "
"was lost. The citizens have started a "
"revolution into '%s'."),
......
(pplayer)),
government_name_translation(pgov));
handle_player_change_government(pplayer, government_number(pgov));
send_player_info_c(pplayer, NULL);
} else if (NULL != pplayer->target_government
send_player_info_c(pplayer, nullptr);
} else if (pplayer->target_government != nullptr
&& !can_change_to_government(pplayer,
pplayer->target_government)) {
/* Lost the technology for the target government; use a random
* available government as new target government. */
struct government *pgov = pick_random_government(pplayer);
notify_player(pplayer, NULL, E_NEW_GOVERNMENT, ftc_server,
notify_player(pplayer, nullptr, E_NEW_GOVERNMENT, ftc_server,
_("The required technology for our new government "
"'%s' was lost. The citizens chose '%s' as new "
"target government."),
......
****************************************************************************/
void choose_tech_goal(struct research *presearch, Tech_type_id tech)
{
fc_assert_ret(presearch != NULL);
fc_assert_ret(presearch != nullptr);
if (tech == presearch->tech_goal) {
return;
......
/* It's been suggested that if the research target is empty then
* choose_random_tech() should be called here. */
presearch->tech_goal = tech;
notify_research(presearch, NULL, E_TECH_GOAL, ftc_server,
notify_research(presearch, nullptr, E_TECH_GOAL, ftc_server,
_("Technology goal is %s."),
research_advance_name_translation(presearch, tech));
}
......
while (tech != A_NONE) {
tech = A_NONE;
advance_index_iterate_max(A_FIRST, i, ac) {
if (valid_advance_by_number(i) != NULL
if (valid_advance_by_number(i) != nullptr
&& research_invention_state(research, i) == TECH_PREREQS_KNOWN) {
/* Found a tech which can be researched. */
tech = i;
......
} else { /* preferred != A_UNSET */
#ifndef FREECIV_NDEBUG
if (!is_future_tech(preferred)) {
fc_assert(NULL != valid_advance_by_number(preferred));
fc_assert(valid_advance_by_number(preferred) != nullptr);
fc_assert(TECH_KNOWN == research_invention_state(vresearch,
preferred));
}
......
advance_name = research_advance_name_translation(presearch, stolen_tech);
research_pretty_name(presearch, research_name, sizeof(research_name));
notify_player(pplayer, NULL, E_MY_DIPLOMAT_THEFT, ftc_server,
notify_player(pplayer, nullptr, E_MY_DIPLOMAT_THEFT, ftc_server,
_("You steal %s from the %s."),
advance_name,
nation_plural_for_player(victim));
......
advance_name,
nation_plural_for_player(victim));
notify_player(victim, NULL, E_ENEMY_DIPLOMAT_THEFT, ftc_server,
notify_player(victim, nullptr, E_ENEMY_DIPLOMAT_THEFT, ftc_server,
_("The %s stole %s from you!"),
nation_plural_for_player(pplayer),
advance_name);
......
choose_tech(research, tech);
/* Notify players sharing the same research. */
send_research_info(research, NULL);
send_research_info(research, nullptr);
}
/************************************************************************//**
......
choose_tech_goal(research, tech_goal);
/* Notify players sharing the same research. */
send_research_info(research, NULL);
send_research_info(research, nullptr);
}
/************************************************************************//**
......
research_tech_lost(presearch, tech);
/* Make notification after losing the research, in case it is a future
* tech (for getting the right tech number). */
notify_player(pplayer, NULL, E_TECH_LOST, ftc_server,
notify_player(pplayer, nullptr, E_TECH_LOST, ftc_server,
_("Too bad! You made a mistake transferring the tech %s and "
"lost it."),
research_advance_name_translation(presearch, tech));
......
* Do not call forget_tech_transferred() that would handle it
* as something we had and now lose.
* (e.g. subtracting techs_researched counter) */
notify_player(plr_recv, NULL, E_TECH_LOST, ftc_server,
notify_player(plr_recv, nullptr, E_TECH_LOST, ftc_server,
_("Too bad! You made a mistake transferring the tech %s and "
"didn't get it."),
research_advance_name_translation(presearch, tech));
......
struct cur_govs_data *data,
const char *reason)
{
struct government *available = NULL;
struct government *available = nullptr;
governments_iterate(pgov) {
if (!data->players[player_index(pplayer)].govs[government_index(pgov)]
&& can_change_to_government(pplayer, pgov)) {
if (available != NULL) {
notify_player(pplayer, NULL, E_NEW_GOVERNMENT, ftc_server,
if (available != nullptr) {
notify_player(pplayer, nullptr, E_NEW_GOVERNMENT, ftc_server,
/* TRANS: "Discovery of <tech>" */
_("%s makes several new government forms"
" available. You may want to start a revolution."),
......
}
} governments_iterate_end;
if (available != NULL) {
notify_player(pplayer, NULL, E_NEW_GOVERNMENT, ftc_server,
if (available != nullptr) {
notify_player(pplayer, nullptr, E_NEW_GOVERNMENT, ftc_server,
/* TRANS: "Discovery of <tech>" */
_("%s makes the government form %s"
" available. You may want to start a revolution."),
    (1-1/1)