Author: sveinung
Date: Tue Mar 14 10:38:50 2017
New Revision: 35106

URL: http://svn.gna.org/viewcvs/freeciv?rev=35106&view=rev
Log:
Prepare action ID validation for generic actions.

Rename the function action_id_is_valid() to action_id_exists(). Make it
about the action with the given id, not about the action result. Use
gen_action_is_valid() for action results.

See hrm Feature #644444

Modified:
    trunk/ai/default/aicity.c
    trunk/client/control.c
    trunk/client/packhand.c
    trunk/common/actions.c
    trunk/common/actions.h
    trunk/common/unittype.c
    trunk/server/ruleset.c
    trunk/server/savegame3.c
    trunk/server/unithand.c

Modified: trunk/ai/default/aicity.c
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/ai/default/aicity.c?rev=35106&r1=35105&r2=35106&view=diff
==============================================================================
--- trunk/ai/default/aicity.c   (original)
+++ trunk/ai/default/aicity.c   Tue Mar 14 10:38:50 2017
@@ -1230,7 +1230,7 @@
                   "Action not aimed at cities");
   }
 
-  fc_assert_msg(action_id_is_valid(action_id),
+  fc_assert_msg(action_id_exists(action_id),
                 "Action %d don't exist.", action_id);
 
   /* Wrong action. Ignore it. */

Modified: trunk/client/control.c
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/client/control.c?rev=35106&r1=35105&r2=35106&view=diff
==============================================================================
--- trunk/client/control.c      (original)
+++ trunk/client/control.c      Tue Mar 14 10:38:50 2017
@@ -1102,7 +1102,7 @@
 
   if (last_order == ORDER_PERFORM_ACTION) {
     /* An action has been specified. */
-    fc_assert_ret(action_id_is_valid(action_id));
+    fc_assert_ret(action_id_exists(action_id));
 
     /* The order system doesn't support actions that can be done to a
      * target that isn't at or next to the actor unit's tile.

Modified: trunk/client/packhand.c
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/client/packhand.c?rev=35106&r1=35105&r2=35106&view=diff
==============================================================================
--- trunk/client/packhand.c     (original)
+++ trunk/client/packhand.c     Tue Mar 14 10:38:50 2017
@@ -257,7 +257,7 @@
 
       /* Just an assert. The client doesn't use the action data. */
       fc_assert(punit->orders.list[i].order != ORDER_PERFORM_ACTION
-                || action_id_is_valid(punit->orders.list[i].action));
+                || action_id_exists(punit->orders.list[i].action));
     }
   }
 
@@ -3967,9 +3967,7 @@
 {
   struct action *act;
 
-  /* Action id is currently hard coded in the gen_action enum. It is
-   * therefore OK to use action_id_is_valid() */
-  if (!action_id_is_valid(p->id)) {
+  if (!action_id_exists(p->id)) {
     /* Action id out of range */
     log_error("handle_ruleset_action() the action id %d is out of range.",
               p->id);
@@ -3999,7 +3997,7 @@
   struct action_enabler *enabler;
   int i;
 
-  if (!action_id_is_valid(p->enabled_action)) {
+  if (!action_id_exists(p->enabled_action)) {
     /* Non existing action */
     log_error("handle_ruleset_action_enabler() the action %d "
               "doesn't exist.",
@@ -4414,7 +4412,7 @@
                                                  diplomat_id);
 
   if (ACTION_COUNT != action_type
-      && !action_id_is_valid(action_type)) {
+      && !action_id_exists(action_type)) {
     /* Non existing action */
     log_error("handle_unit_action_answer() the action %d doesn't exist.",
               action_type);

Modified: trunk/common/actions.c
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/common/actions.c?rev=35106&r1=35105&r2=35106&view=diff
==============================================================================
--- trunk/common/actions.c      (original)
+++ trunk/common/actions.c      Tue Mar 14 10:38:50 2017
@@ -143,9 +143,9 @@
   va_start(args, error_message);
 
   while (ACTION_NONE != (act = va_arg(args, enum gen_action))) {
-    /* The only expected invalid action id is ACTION_NONE and it should
-     * terminate the loop before this assertion. */
-    fc_assert_ret_msg(action_id_is_valid(act), "Invalid action id %d", act);
+    /* Any invalid action result should terminate the loop before this
+     * assertion. */
+    fc_assert_ret_msg(gen_action_is_valid(act), "Invalid action id %d", act);
 
     obligatory_req_vector_append(&obligatory_hard_reqs[act], oreq);
   }
@@ -637,9 +637,10 @@
 /**************************************************************************
   Returns TRUE iff the specified action ID refers to a valid action.
 **************************************************************************/
-bool action_id_is_valid(const int action_id)
-{
-  return gen_action_is_valid(action_id);
+bool action_id_exists(const int action_id)
+{
+  /* Actions are still hard coded. */
+  return gen_action_is_valid(action_id) && actions[action_id];
 }
 
 /**************************************************************************
@@ -649,7 +650,7 @@
 **************************************************************************/
 struct action *action_by_number(int action_id)
 {
-  if (!action_id_is_valid(action_id)) {
+  if (!action_id_exists(action_id)) {
     /* Nothing to return. */
 
     log_verbose("Asked for non existing action numbered %d", action_id);
@@ -672,7 +673,7 @@
   /* Actions are still hard coded in the gen_action enum. */
   int action_id = gen_action_by_name(name, fc_strcasecmp);
 
-  if (!action_id_is_valid(action_id)) {
+  if (!action_id_exists(action_id)) {
     /* Nothing to return. */
 
     log_verbose("Asked for non existing action named %s", name);
@@ -747,8 +748,7 @@
 **************************************************************************/
 bool action_id_is_rare_pop_up(int action_id)
 {
-  fc_assert_ret_val_msg((action_id_is_valid(action_id)
-                         && actions[action_id]),
+  fc_assert_ret_val_msg((action_id_exists(action_id)),
                         FALSE, "Action %d don't exist.", action_id);
 
   return actions[action_id]->rare_pop_up;
@@ -868,7 +868,7 @@
     fc_assert(action_prob_not_relevant(prob));
 
     /* but the action should be valid */
-    fc_assert_ret_val_msg(action_id_is_valid(action_id),
+    fc_assert_ret_val_msg(action_id_exists(action_id),
                           "Invalid action",
                           "Invalid action %d", action_id);
 
@@ -1040,7 +1040,7 @@
   /* Sanity check: a non existing action enabler can't be added. */
   fc_assert_ret(enabler);
   /* Sanity check: a non existing action doesn't have enablers. */
-  fc_assert_ret(action_id_is_valid(enabler->action));
+  fc_assert_ret(action_id_exists(enabler->action));
 
   action_enabler_list_append(
         action_enablers_for_action(enabler->action),
@@ -1057,7 +1057,7 @@
   /* Sanity check: a non existing action enabler can't be removed. */
   fc_assert_ret_val(enabler, FALSE);
   /* Sanity check: a non existing action doesn't have enablers. */
-  fc_assert_ret_val(action_id_is_valid(enabler->action), FALSE);
+  fc_assert_ret_val(action_id_exists(enabler->action), FALSE);
 
   return action_enabler_list_remove(
         action_enablers_for_action(enabler->action),
@@ -1071,7 +1071,7 @@
 action_enablers_for_action(enum gen_action action)
 {
   /* Sanity check: a non existing action doesn't have enablers. */
-  fc_assert_ret_val(action_id_is_valid(action), NULL);
+  fc_assert_ret_val(action_id_exists(action), NULL);
 
   return action_enablers_by_action[action];
 }
@@ -1098,7 +1098,7 @@
 
   /* Sanity check: a non existing action doesn't have any obligatory hard
    * requirements. */
-  fc_assert_ret_val(action_id_is_valid(enabler->action), NULL);
+  fc_assert_ret_val(action_id_exists(enabler->action), NULL);
 
   obligatory_req_vector_iterate(&obligatory_hard_reqs[enabler->action],
                                 obreq) {
@@ -1135,7 +1135,7 @@
 
   /* Sanity check: a non existing action doesn't have any obligatory hard
    * requirements. */
-  fc_assert_ret(action_id_is_valid(enabler->action));
+  fc_assert_ret(action_id_exists(enabler->action));
 
   obligatory_req_vector_iterate(&obligatory_hard_reqs[enabler->action],
                                 obreq) {
@@ -2132,7 +2132,7 @@
     /* No known hard coded requirements. */
     break;
   case ACTION_COUNT:
-    fc_assert(action_id_is_valid(wanted_action));
+    fc_assert(action_id_exists(wanted_action));
     break;
   }
 
@@ -3708,7 +3708,7 @@
 bool action_mp_full_makes_legal(const struct unit *actor,
                                 const int action_id)
 {
-  fc_assert(action_id_is_valid(action_id) || action_id == ACTION_ANY);
+  fc_assert(action_id_exists(action_id) || action_id == ACTION_ANY);
 
   /* Check if full movement points may enable the specified action. */
   return !utype_may_act_move_frags(unit_type_get(actor),

Modified: trunk/common/actions.h
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/common/actions.h?rev=35106&r1=35105&r2=35106&view=diff
==============================================================================
--- trunk/common/actions.h      (original)
+++ trunk/common/actions.h      Tue Mar 14 10:38:50 2017
@@ -324,7 +324,7 @@
 
 bool actions_are_ready(void);
 
-bool action_id_is_valid(const int action_id);
+bool action_id_exists(const int action_id);
 
 struct action *action_by_number(int action_id);
 struct action *action_by_rule_name(const char *name);

Modified: trunk/common/unittype.c
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/common/unittype.c?rev=35106&r1=35105&r2=35106&view=diff
==============================================================================
--- trunk/common/unittype.c     (original)
+++ trunk/common/unittype.c     Tue Mar 14 10:38:50 2017
@@ -611,7 +611,7 @@
 {
   struct range *ml_range;
 
-  fc_assert(action_id_is_valid(action_id) || action_id == ACTION_ANY);
+  fc_assert(action_id_exists(action_id) || action_id == ACTION_ANY);
 
   if (!utype_may_act_at_all(punit_type)) {
     /* Not an actor unit. */

Modified: trunk/server/ruleset.c
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/server/ruleset.c?rev=35106&r1=35105&r2=35106&view=diff
==============================================================================
--- trunk/server/ruleset.c      (original)
+++ trunk/server/ruleset.c      Tue Mar 14 10:38:50 2017
@@ -6256,7 +6256,7 @@
           }
 
           action = gen_action_by_name(action_text, fc_strcasecmp);
-          if (!action_id_is_valid(action)) {
+          if (!action_id_exists(action)) {
             ruleset_error(LOG_ERROR, "\"%s\" [%s] lists unknown action type 
\"%s\".",
                           filename, sec_name, action_text);
             ok = FALSE;

Modified: trunk/server/savegame3.c
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/server/savegame3.c?rev=35106&r1=35105&r2=35106&view=diff
==============================================================================
--- trunk/server/savegame3.c    (original)
+++ trunk/server/savegame3.c    Tue Mar 14 10:38:50 2017
@@ -5471,7 +5471,7 @@
             || (order->order == ORDER_ACTION_MOVE
                 && !direction8_is_valid(order->dir))
             || (order->order == ORDER_PERFORM_ACTION
-                && !action_id_is_valid(order->action))
+                && !action_id_exists(order->action))
             || (order->order == ORDER_ACTIVITY
                 && order->activity == ACTIVITY_LAST)) {
           /* An invalid order. Just drop the orders for this unit. */

Modified: trunk/server/unithand.c
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/server/unithand.c?rev=35106&r1=35105&r2=35106&view=diff
==============================================================================
--- trunk/server/unithand.c     (original)
+++ trunk/server/unithand.c     Tue Mar 14 10:38:50 2017
@@ -731,7 +731,7 @@
   }
 
   /* ACTION_ANY is handled above. */
-  fc_assert_ret_val(action_id_is_valid(action_id), FALSE);
+  fc_assert_ret_val(action_id_exists(action_id), FALSE);
 
   action_enabler_list_iterate(action_enablers_for_action(action_id),
                               enabler) {
@@ -773,7 +773,7 @@
   }
 
   /* ACTION_ANY is handled above. */
-  fc_assert_ret_val(action_id_is_valid(action_id), FALSE);
+  fc_assert_ret_val(action_id_exists(action_id), FALSE);
 
   action_enabler_list_iterate(action_enablers_for_action(action_id),
                               enabler) {
@@ -1046,7 +1046,7 @@
                                              CITYT_CLAIMED,
                                              FALSE)) {
     explnat->kind = ANEK_TGT_IS_UNCLAIMED;
-  } else if (action_id_is_valid(action_id) && punit
+  } else if (action_id_exists(action_id) && punit
              && ((target_tile
                   && !action_id_distance_inside_max(action_id,
                       real_map_distance(unit_tile(punit), target_tile)))
@@ -1065,7 +1065,7 @@
                 > unit_type_get(punit)->paratroopers_range) {
     explnat->kind = ANEK_DISTANCE_FAR;
     explnat->distance = unit_type_get(punit)->paratroopers_range;
-  } else if (action_id_is_valid(action_id) && punit
+  } else if (action_id_exists(action_id) && punit
              && ((target_tile
                   && real_map_distance(unit_tile(punit), target_tile)
                       < action_by_number(action_id)->min_distance)
@@ -1155,7 +1155,7 @@
     /* Please add a check for any new action forbidding scenario setting
      * above this comment. */
     explnat->kind = ANEK_SCENARIO_DISABLED;
-  } else if (action_id_is_valid(action_id)
+  } else if (action_id_exists(action_id)
              && (blocker = action_is_blocked_by(action_id, punit,
                                                 target_tile, target_city,
                                                 target_unit))) {
@@ -2040,7 +2040,7 @@
   struct unit *punit = game_unit_by_number(target_id);
   struct city *pcity = game_city_by_number(target_id);
 
-  if (!action_id_is_valid(action_type)) {
+  if (!action_id_exists(action_type)) {
     /* Non existing action */
     log_error("handle_unit_action_query() the action %d doesn't exist.",
               action_type);
@@ -2156,7 +2156,7 @@
   struct unit *punit = game_unit_by_number(target_id);
   struct city *pcity = game_city_by_number(target_id);
 
-  if (!action_id_is_valid(action_type)) {
+  if (!action_id_exists(action_type)) {
     /* Non existing action */
     log_error("unit_perform_action() the action %d doesn't exist.",
               action_type);
@@ -4539,7 +4539,7 @@
 
       break;
     case ORDER_PERFORM_ACTION:
-      if (!action_id_is_valid(packet->action[i])) {
+      if (!action_id_exists(packet->action[i])) {
         /* Non existing action */
         log_error("handle_unit_orders() the action %d doesn't exist. "
                   "Sent in order number %d from %s to unit number %d.",


_______________________________________________
Freeciv-commits mailing list
Freeciv-commits@gna.org
https://mail.gna.org/listinfo/freeciv-commits

Reply via email to