]> git.pond.sub.org Git - empserver/blobdiff - src/lib/common/pathfind.c
common/pathfind: A more portable DPRINTF()
[empserver] / src / lib / common / pathfind.c
index 4e3fc47b94b0910d7cc289475d9523b195563e5a..4d768fb1003f015f28fb542ce1f8c230f96214d4 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *  Empire - A multi-player, client/server Internet based war game.
- *  Copyright (C) 1986-2014, Dave Pare, Jeff Bailey, Thomas Ruschak,
+ *  Copyright (C) 1986-2020, Dave Pare, Jeff Bailey, Thomas Ruschak,
  *                Ken Stevens, Steve McClure, Markus Armbruster
  *
  *  Empire is free software: you can redistribute it and/or modify
@@ -27,7 +27,7 @@
  *  pathfind.c: Find cheapest paths
  *
  *  Known contributors to this file:
- *     Markus Armbruster, 2014
+ *     Markus Armbruster, 2014-2020
  */
 
 #include <config.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
-#include "file.h"
 #include "nat.h"
 #include "optlist.h"
 #include "path.h"
 #include "sect.h"
 
 #ifdef PATH_FIND_DEBUG
-#define DPRINTF(fmt, ...) ((void)printf(fmt , ## __VA_ARGS__))
+#define DPRINTF(...) ((void)printf(## __VA_ARGS__))
 #else
-#define DPRINTF(fmt, ...) ((void)0)
+#define DPRINTF(...) ((void)0)
 #endif
 
 static char *bufrotate(char *buf, size_t bufsz, size_t i);
@@ -58,7 +57,7 @@ static char *bufrotate(char *buf, size_t bufsz, size_t i);
  */
 
 /*
- * Array of sector data, indexed by sector uid
+ * Array of sector data, indexed by sector UID
  *
  * We need to store a few values per sector visited by the path
  * search.  An array is the stupidest data structure that could
@@ -99,8 +98,8 @@ static struct pf_map *pf_map;
  */
 
 struct pf_heap {
-    int uid;                   /* sector uid and */
-    coord x, y;                        /* coordinates, uid == XYOFFSET(x, y) */
+    int uid;                   /* sector UID and ... */
+    coord x, y;                        /* coordinates, @uid == XYOFFSET(@x, @y) */
     double cost;               /* cost from source */
 };
 
@@ -132,7 +131,7 @@ static double pf_sumcost;
 #endif /* !PATH_FIND_STATS */
 
 #ifndef NDEBUG                 /* silence "not used" warning */
-/* Is sector with uid UID open?  */
+/* Is sector with UID @uid open? */
 static int
 pf_is_open(int uid)
 {
@@ -140,7 +139,7 @@ pf_is_open(int uid)
 }
 #endif
 
-/* Is sector with uid UID closed?  */
+/* Is sector with UID @uid closed? */
 static int
 pf_is_closed(int uid)
 {
@@ -151,7 +150,7 @@ pf_is_closed(int uid)
     return pf_map[uid].visit > pf_visit;
 }
 
-/* Is sector with uid UID unvisited?  */
+/* Is sector with UID @uid unvisited? */
 static int
 pf_is_unvisited(int uid)
 {
@@ -188,7 +187,7 @@ pf_check(void)
 #define pf_check() ((void)0)
 #endif
 
-/* Swap pf_heap's I-th and J-th elements.  */
+/* Swap pf_heap's @i-th and @j-th elements. */
 static void
 pf_heap_swap(int i, int j)
 {
@@ -203,7 +202,7 @@ pf_heap_swap(int i, int j)
     pf_map[pf_heap[j].uid].heapi = j;
 }
 
-/* Restore heap property after N-th element's cost increased.  */
+/* Restore heap property after @n-th element's cost increased. */
 static void
 pf_sift_down(int n)
 {
@@ -219,7 +218,7 @@ pf_sift_down(int n)
     }
 }
 
-/* Restore heap property after N-th element's cost decreased.  */
+/* Restore heap property after @n-th element's cost decreased. */
 static void
 pf_sift_up(int n)
 {
@@ -234,9 +233,9 @@ pf_sift_up(int n)
 }
 
 /*
- * Open the unvisited sector X,Y.
- * UID is sector uid, it equals XYOFFSET(X,Y).
- * Cheapest path from source comes from direction DIR and has cost COST.
+ * Open the unvisited sector @x,@y.
+ * @uid is sector UID, it equals XYOFFSET(@x,@y).
+ * Cheapest path from source comes from direction @dir and has cost @cost.
  */
 static void
 pf_open(int uid, coord x, coord y, int dir, double cost)
@@ -284,7 +283,7 @@ pf_close(void)
 /* silence "not used" warning */
 #ifdef PATH_FIND_DEBUG
 /*
- * Return cost from source to sector with uid UID.
+ * Return cost from source to sector with UID @uid.
  * It must be visited, i.e. open or closed.
  */
 static double
@@ -327,8 +326,8 @@ y_in_dir(coord y, int dir)
 
 /*
  * Set the current source and cost function.
- * SX,SY is the source.
- * The cost to enter the sector with uid u is COST(ACTOR, u).
+ * @sx,@sy is the source.
+ * The cost to enter the sector with UID ID is @cost(@actor, ID).
  * Negative value means the sector can't be entered.
  */
 static void
@@ -359,7 +358,7 @@ pf_set_source(coord sx, coord sy, natid actor, double (*cost)(natid, int))
 }
 
 /*
- * Find cheapest path from current source to DX,DY, return its cost.
+ * Find cheapest path from current source to @dx,@dy, return its cost.
  */
 double
 path_find_to(coord dx, coord dy)
@@ -388,11 +387,11 @@ path_find_to(coord dx, coord dy)
            ny = y_in_dir(y, DIR_FIRST + i);
            nuid = XYOFFSET(nx, ny);
            /*
-            * Cost to enter NX,NY doesn't depend on direction of
-            * entry.  This X,Y is at least as expensive as any
-            * previous one.  Therefore, cost to go to NX,NY via X,Y
-            * is at least as high as any previously found route.
-            * Skip neighbors that have a route already.
+            * Cost to enter @nx,@ny doesn't depend on direction of
+            * entry.  This @x,@y is at least as expensive as any
+            * previous one.  Therefore, cost to go to @nx,@ny via
+            * @x,@y is at least as high as any previously found
+            * route.  Skip neighbors that have a route already.
             */
            if (!pf_is_unvisited(nuid))
                continue;
@@ -413,10 +412,11 @@ path_find_to(coord dx, coord dy)
 }
 
 /*
- * Write route from SX,SY to DX,DY to BUF[BUFSIZ], return its length.
- * If the route is longer than BUFSIZ-1 characters, it's truncated.
+ * Write route from @sx,@sy to @dx,@dy to array @buf[@bufsiz].
+ * If the route is longer than @bufsiz-1 characters, it's truncated.
  * You must compute path cost first, with path_find_to().
- * SX,SY must be on a shortest path from the current source to DX,DY.
+ * @sx,@sy must be on a shortest path from the current source to @dx,@dy.
+ * Return length of the (untruncated) route.
  */
 size_t
 path_find_route(char *buf, size_t bufsz,
@@ -465,7 +465,7 @@ path_find_route(char *buf, size_t bufsz,
 }
 
 /*
- * Rotate BUF[BUFSZ] to put BUF[I] into BUF[0], and zero-terminate.
+ * Rotate @buf[@bufsz] to put @buf[@i] into @buf[0], and zero-terminate.
  */
 static char *
 bufrotate(char *buf, size_t bufsz, size_t i)
@@ -565,7 +565,7 @@ static double
 cost_land(natid actor, int uid, int mobtype)
 {
     /*
-     * Non-negative cost must not depend on ACTOR, see unit_path().
+     * Non-negative cost must not depend on @actor, see unit_path().
      */
     struct sctstr *sp = (void *)empfile[EF_SECTOR].cache;
 
@@ -632,8 +632,8 @@ static double (*cost_tab[])(natid, int) = {
 };
 
 /*
- * Start finding paths from SX,SY.
- * Use mobility costs for ACTOR and MOBTYPE.
+ * Start finding paths from @sx,@sy.
+ * Use mobility costs for @actor and @mobtype.
  */
 void
 path_find_from(coord sx, coord sy, natid actor, int mobtype)
@@ -642,8 +642,8 @@ path_find_from(coord sx, coord sy, natid actor, int mobtype)
 }
 
 /*
- * Find cheapest path from SX,SY to DX,DY, return its mobility cost.
- * Use mobility costs for ACTOR and MOBTYPE.
+ * Find cheapest path from @sx,@sy to @dx,@dy, return its mobility cost.
+ * Use mobility costs for @actor and @mobtype.
  */
 double
 path_find(coord sx, coord sy, coord dx, coord dy, natid actor, int mobtype)