]> git.pond.sub.org Git - empserver/commitdiff
gen: New emp_quelen(), replacing open-coded counting loops
authorMarkus Armbruster <armbru@pond.sub.org>
Sun, 28 Dec 2014 20:38:13 +0000 (21:38 +0100)
committerMarkus Armbruster <armbru@pond.sub.org>
Sat, 28 Feb 2015 15:13:14 +0000 (16:13 +0100)
Signed-off-by: Markus Armbruster <armbru@pond.sub.org>
include/queue.h
src/lib/gen/queue.c
src/lib/subs/aircombat.c
src/lib/subs/lndsub.c

index ae2eca546e117cfc11802e69a47a25ab6099c48e..9e6dcb99b36c82877169a30b1758f96d218d00bd 100644 (file)
@@ -27,7 +27,7 @@
  *  queue.h: Generic vax-like doubly linked list queues
  *
  *  Known contributors to this file:
- *
+ *     Markus Armbruster, 2014
  */
 
 #ifndef QUEUE_H
@@ -42,6 +42,7 @@ struct emp_qelem {
 
 extern void emp_remque(struct emp_qelem *);
 extern void emp_initque(struct emp_qelem *);
+extern int emp_quelen(struct emp_qelem *);
 extern struct emp_qelem *emp_searchque(struct emp_qelem *, void *,
                                int (*)(struct emp_qelem *, void *));
 extern void emp_insque(struct emp_qelem *, struct emp_qelem *);
index be4e9a04e8bc4f7d34cd3b38ef47811e04eb8271..ae55227c9c63b46da0448acfc34fecb3043328a5 100644 (file)
@@ -27,7 +27,7 @@
  *  queue.c: Various queue routines (for lists)
  *
  *  Known contributors to this file:
- *
+ *     Markus Armbruster, 2014
  */
 
 #include <config.h>
@@ -58,6 +58,17 @@ emp_remque(struct emp_qelem *elem)
        elem->q_back->q_forw = elem->q_forw;
 }
 
+int
+emp_quelen(struct emp_qelem *queue)
+{
+    struct emp_qelem *qp;
+    int len;
+
+    for (qp = queue->q_forw, len = 0; qp != queue; qp = qp->q_forw, len++)
+       ;
+    return len;
+}
+
 struct emp_qelem *
 emp_searchque(struct emp_qelem *queue, void *key,
              int (*test)(struct emp_qelem *, void *))
index a1c22fe80a547ce451cd6ee2a601130954ce40c3..2a76a241a1b591bc7d5409d0fe588fea4442badb 100644 (file)
@@ -30,7 +30,7 @@
  *     Dave Pare, 1986
  *     Thomas Ruschak, 1992
  *     Steve McClure, 1996
- *     Markus Armbruster, 2006-2012
+ *     Markus Armbruster, 2006-2014
  */
 
 #include <config.h>
@@ -314,11 +314,7 @@ ac_intercept(struct emp_qelem *bomb_list, struct emp_qelem *esc_list,
     sam_intercept(esc_list, def_list, def_own, plane_owner, x, y,
                  only_mission);
 
-    att_count = 0;
-    for (qp = bomb_list->q_forw; qp != bomb_list; qp = qp->q_forw)
-       att_count++;
-    for (qp = esc_list->q_forw; qp != esc_list; qp = qp->q_forw)
-       att_count++;
+    att_count = emp_quelen(bomb_list) + emp_quelen(esc_list);
     if (!att_count)
        return;
 
index 677022a56bbcfe81f18bc0ff29b60a3ffb24cd25..276050d7a53b01d31d2ab9d502574a6cc316eca9 100644 (file)
@@ -719,20 +719,6 @@ lnd_check_mar(struct lndstr *lp, struct sctstr *sectp)
     return LND_STUCK_NOT;
 }
 
-static int
-lnd_count(struct emp_qelem *list)
-{
-    struct emp_qelem *qp;
-    struct emp_qelem *next;
-    int count = 0;
-
-    for (qp = list->q_back; qp != list; qp = next) {
-       next = qp->q_back;
-       ++count;
-    }
-    return count;
-}
-
 static int
 lnd_damage(struct emp_qelem *list, int totdam)
 {
@@ -742,7 +728,7 @@ lnd_damage(struct emp_qelem *list, int totdam)
     int dam;
     int count;
 
-    if (!totdam || !(count = lnd_count(list)))
+    if (!totdam || !(count = emp_quelen(list)))
        return 0;
     dam = ldround((double)totdam / count, 1);
     for (qp = list->q_back; qp != list; qp = next) {
@@ -785,7 +771,7 @@ static int
 lnd_missile_interdiction(struct emp_qelem *list, coord newx, coord newy,
                         natid victim)
 {
-    int mindam = lnd_count(list) * 20;
+    int mindam = emp_quelen(list) * 20;
     int hardtarget = lnd_easiest_target(list);
     int dam, newdam, sublaunch;
     int stopping = 0;