(as_data): Use void * for userdata member and userdata parameter of
callbacks. Users changed.
This commit is contained in:
parent
aa5a8ec0dc
commit
8383f33229
3 changed files with 41 additions and 41 deletions
|
@ -30,8 +30,8 @@
|
||||||
#ifndef AS_H
|
#ifndef AS_H
|
||||||
#define AS_H
|
#define AS_H
|
||||||
|
|
||||||
#include <stdio.h> /* for FILE */
|
#include <stdio.h>
|
||||||
#include "misc.h" /* for s_char */
|
#include "misc.h"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Coordinate.
|
* Coordinate.
|
||||||
|
@ -90,12 +90,17 @@ struct as_data {
|
||||||
int maxneighbors; /* max # of neighbors a cell can have */
|
int maxneighbors; /* max # of neighbors a cell can have */
|
||||||
int hashsize; /* size of internal hash table */
|
int hashsize; /* size of internal hash table */
|
||||||
|
|
||||||
int (*hash) (struct as_coord); /* hash function (coord -> int) */
|
/* hash function (coord -> int) */
|
||||||
int (*neighbor) (struct as_coord, struct as_coord *, s_char *); /* function to find neighbors */
|
int (*hash)(struct as_coord);
|
||||||
double (*lbcost) (struct as_coord, struct as_coord, s_char *); /* function to give lower bound cost */
|
/* function to find neighbors */
|
||||||
double (*realcost) (struct as_coord, struct as_coord, s_char *); /* function to give real cost */
|
int (*neighbor)(struct as_coord, struct as_coord *, void *);
|
||||||
double (*seccost) (struct as_coord, struct as_coord, s_char *); /* function to secondary cost */
|
/* function to give lower bound cost */
|
||||||
char *userdata; /* user's data, passed to callbacks */
|
double (*lbcost)(struct as_coord, struct as_coord, void *);
|
||||||
|
/* function to give real cost */
|
||||||
|
double (*realcost)(struct as_coord, struct as_coord, void *);
|
||||||
|
/* function to secondary cost */
|
||||||
|
double (*seccost)(struct as_coord, struct as_coord, void *);
|
||||||
|
void *userdata; /* user's data, passed to callbacks */
|
||||||
struct as_coord from; /* from coordinate */
|
struct as_coord from; /* from coordinate */
|
||||||
struct as_coord to; /* to coordinate */
|
struct as_coord to; /* to coordinate */
|
||||||
struct as_path *path; /* solution */
|
struct as_path *path; /* solution */
|
||||||
|
@ -147,17 +152,17 @@ extern struct as_data *as_init(int maxneighbors, int hashsize,
|
||||||
int (*hashfunc)(struct as_coord),
|
int (*hashfunc)(struct as_coord),
|
||||||
int (*neighborfunc)(struct as_coord,
|
int (*neighborfunc)(struct as_coord,
|
||||||
struct as_coord *,
|
struct as_coord *,
|
||||||
s_char *),
|
void *),
|
||||||
double (*lbcostfunc)(struct as_coord,
|
double (*lbcostfunc)(struct as_coord,
|
||||||
struct as_coord,
|
struct as_coord,
|
||||||
s_char *),
|
void *),
|
||||||
double (*realcostfunc)(struct as_coord,
|
double (*realcostfunc)(struct as_coord,
|
||||||
struct as_coord,
|
struct as_coord,
|
||||||
s_char *),
|
void *),
|
||||||
double (*seccostfunc)(struct as_coord,
|
double (*seccostfunc)(struct as_coord,
|
||||||
struct as_coord,
|
struct as_coord,
|
||||||
s_char *),
|
void *),
|
||||||
s_char *userdata);
|
void *userdata);
|
||||||
extern int as_search(struct as_data *adp);
|
extern int as_search(struct as_data *adp);
|
||||||
extern void as_delete(struct as_data *adp);
|
extern void as_delete(struct as_data *adp);
|
||||||
extern void as_reset(struct as_data *adp);
|
extern void as_reset(struct as_data *adp);
|
||||||
|
|
|
@ -32,12 +32,11 @@ struct as_data *
|
||||||
as_init(int maxneighbors,
|
as_init(int maxneighbors,
|
||||||
int hashsize,
|
int hashsize,
|
||||||
int (*hashfunc)(struct as_coord),
|
int (*hashfunc)(struct as_coord),
|
||||||
int (*neighborfunc) (struct as_coord, struct as_coord *, s_char *),
|
int (*neighborfunc)(struct as_coord, struct as_coord *, void *),
|
||||||
double (*lbcostfunc) (struct as_coord, struct as_coord, s_char *),
|
double (*lbcostfunc)(struct as_coord, struct as_coord, void *),
|
||||||
double (*realcostfunc) (struct as_coord, struct as_coord,
|
double (*realcostfunc)(struct as_coord, struct as_coord, void *),
|
||||||
s_char *),
|
double (*seccostfunc)(struct as_coord, struct as_coord, void *),
|
||||||
double (*seccostfunc) (struct as_coord, struct as_coord, s_char *),
|
void *userdata)
|
||||||
s_char *userdata)
|
|
||||||
{
|
{
|
||||||
struct as_data *adp;
|
struct as_data *adp;
|
||||||
|
|
||||||
|
|
|
@ -60,14 +60,10 @@ struct bestp {
|
||||||
};
|
};
|
||||||
|
|
||||||
static int bp_path(struct as_path *pp, s_char *buf);
|
static int bp_path(struct as_path *pp, s_char *buf);
|
||||||
static int bp_neighbors(struct as_coord c, struct as_coord *cp,
|
static int bp_neighbors(struct as_coord c, struct as_coord *cp, void *);
|
||||||
s_char *pp);
|
static double bp_lbcost(struct as_coord from, struct as_coord to, void *);
|
||||||
static double bp_lbcost(struct as_coord from, struct as_coord to,
|
static double bp_realcost(struct as_coord from, struct as_coord to, void *);
|
||||||
s_char *pp);
|
static double bp_seccost(struct as_coord from, struct as_coord to, void *);
|
||||||
static double bp_realcost(struct as_coord from, struct as_coord to,
|
|
||||||
s_char *pp);
|
|
||||||
static double bp_seccost(struct as_coord from, struct as_coord to,
|
|
||||||
s_char *pp);
|
|
||||||
static int bp_coord_hash(struct as_coord c);
|
static int bp_coord_hash(struct as_coord c);
|
||||||
|
|
||||||
/* We use this for caching neighbors. It never changes except
|
/* We use this for caching neighbors. It never changes except
|
||||||
|
@ -83,7 +79,7 @@ bp_init(void)
|
||||||
memset(bp, 0, sizeof(*bp));
|
memset(bp, 0, sizeof(*bp));
|
||||||
bp->adp = as_init(BP_NEIGHBORS, BP_ASHASHSIZE, bp_coord_hash,
|
bp->adp = as_init(BP_NEIGHBORS, BP_ASHASHSIZE, bp_coord_hash,
|
||||||
bp_neighbors, bp_lbcost, bp_realcost,
|
bp_neighbors, bp_lbcost, bp_realcost,
|
||||||
bp_seccost, (s_char *)bp);
|
bp_seccost, bp);
|
||||||
|
|
||||||
if (bp->adp == NULL)
|
if (bp->adp == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -183,7 +179,7 @@ bp_path(struct as_path *pp, s_char *buf)
|
||||||
* XXX need to check ownership, sector types, etc.
|
* XXX need to check ownership, sector types, etc.
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
bp_neighbors(struct as_coord c, struct as_coord *cp, s_char *pp)
|
bp_neighbors(struct as_coord c, struct as_coord *cp, void *pp)
|
||||||
{
|
{
|
||||||
struct sctstr *sectp = (void *)empfile[EF_SECTOR].cache;
|
struct sctstr *sectp = (void *)empfile[EF_SECTOR].cache;
|
||||||
coord x, y;
|
coord x, y;
|
||||||
|
@ -238,7 +234,7 @@ bp_neighbors(struct as_coord c, struct as_coord *cp, s_char *pp)
|
||||||
*/
|
*/
|
||||||
/*ARGSUSED*/
|
/*ARGSUSED*/
|
||||||
static double
|
static double
|
||||||
bp_lbcost(struct as_coord from, struct as_coord to, s_char *pp)
|
bp_lbcost(struct as_coord from, struct as_coord to, void *pp)
|
||||||
{
|
{
|
||||||
struct sctstr *sectp = (void *)empfile[EF_SECTOR].cache;
|
struct sctstr *sectp = (void *)empfile[EF_SECTOR].cache;
|
||||||
struct bestp *bp = (struct bestp *)pp;
|
struct bestp *bp = (struct bestp *)pp;
|
||||||
|
@ -260,7 +256,7 @@ bp_lbcost(struct as_coord from, struct as_coord to, s_char *pp)
|
||||||
* Compute the real cost to move from "from" to "to".
|
* Compute the real cost to move from "from" to "to".
|
||||||
*/
|
*/
|
||||||
static double
|
static double
|
||||||
bp_realcost(struct as_coord from, struct as_coord to, s_char *pp)
|
bp_realcost(struct as_coord from, struct as_coord to, void *pp)
|
||||||
{
|
{
|
||||||
return bp_lbcost(from, to, pp);
|
return bp_lbcost(from, to, pp);
|
||||||
}
|
}
|
||||||
|
@ -271,7 +267,7 @@ bp_realcost(struct as_coord from, struct as_coord to, s_char *pp)
|
||||||
*/
|
*/
|
||||||
/*ARGSUSED*/
|
/*ARGSUSED*/
|
||||||
static double
|
static double
|
||||||
bp_seccost(struct as_coord from, struct as_coord to, s_char *pp)
|
bp_seccost(struct as_coord from, struct as_coord to, void *pp)
|
||||||
{
|
{
|
||||||
return (double)mapdist((coord)from.x, (coord)from.y,
|
return (double)mapdist((coord)from.x, (coord)from.y,
|
||||||
(coord)to.x, (coord)to.y);
|
(coord)to.x, (coord)to.y);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue