/* * graph.h * Graph structures and prototypes for kiceberg. * $Id$ */ #ifndef __GRAPH_H #define __GRAPH_H #include "symbol.h" struct node { struct arc *head; struct symbol *name; }; struct arc { struct arc *next; struct symbol *name; /* symbol of node that this arc points to */ int weight; }; struct itinerary { struct visit *head; }; struct visit { struct visit *next; struct node *dest; }; struct node *node_new(struct symbol *); void node_free(struct node *); void graph_free(struct node *); struct arc *node_arc_add(struct node *, struct symbol *, int); struct itinerary *itinerary_new(void); void itinerary_free(struct itinerary *); struct visit *itinerary_add(struct itinerary *, struct node *); int itinerary_find(struct itinerary *, struct node *); void node_dump(struct node *); void arc_dump(struct arc *); void graph_dump(struct node *); void graph_dump_r(struct node *, struct itinerary *, int); #endif /* !__GRAPH_H */