*/
#define CANT_HAPPEN(expr) ((expr) ? oops(#expr, __FILE__, __LINE__) : 0)
-typedef int (*qsort_func_t) (const void *, const void *);
-
/* return codes from command routines */
#define RET_OK 0 /* command completed sucessfully */
#define RET_FAIL 1 /* command completed unsucessfully [?] */
extern void as_makepath(struct as_data *adp);
extern void as_free_path(struct as_path *pp);
-extern int as_costcomp(struct as_node **n1, struct as_node **n2);
+extern int as_costcomp(const void *, const void *);
extern struct as_queue *as_extend(struct as_data *adp);
extern struct as_queue *as_merge(struct as_data *adp,
struct as_queue *head,
* Used as comparision function for qsort.
*/
int
-as_costcomp(struct as_node **n1, struct as_node **n2)
+as_costcomp(const void *p1, const void *p2)
{
+ struct as_node *const *n1 = p1;
+ struct as_node *const *n2 = p2;
double diff;
diff = (*n1)->lbcost - (*n2)->lbcost;
return (NULL);
if (i > 1)
qsort(adp->neighbor_nodes, i,
- sizeof(*adp->neighbor_nodes), (qsort_func_t)as_costcomp);
+ sizeof(*adp->neighbor_nodes), as_costcomp);
/* remove old coord from head of queue and add to list of tried */
qp = head;
static void addtopow(short *vec, struct powstr *pow);
static void gen_power(void);
static void out5(double value, int round_val, int round_flag);
-static int powcmp(struct powsort *p1, struct powsort *p2);
+static int powcmp(const void *, const void *);
static int set_target(s_char *, int *);
int
for (i = 1; i < MAXNOC; i++) {
struct natstr *np;
int maxpop;
- float f = 1.0;
if (opt_RES_POP) {
np = getnatp(i);
maxpop = max_population(np->nat_level[NAT_RLEV], SCT_MINE, 0);
- f = 1.0 + (((float)maxpop) / 10000.0);
+ powbuf[i].p_power *= 1.0 + maxpop / 10000.0;
}
- powbuf[i].p_power *= f;
order[i].powval = powbuf[i].p_power;
order[i].cnum = i;
}
- qsort((s_char *)&order[1], MAXNOC - 1, sizeof(*order),
- (qsort_func_t)powcmp);
+ qsort(&order[1], MAXNOC - 1, sizeof(*order), powcmp);
putpower(0, &powbuf[0]);
for (i = 1; i < MAXNOC; i++) {
putpower(i, &powbuf[order[i].cnum]);
}
static int
-powcmp(struct powsort *p1, struct powsort *p2)
+powcmp(const void *a, const void *b)
{
+ const struct powsort *p1 = a;
+ const struct powsort *p2 = b;
+
if (p1->powval > p2->powval)
return -1;
if (p1->powval < p2->powval)