#ifndef _GRAPH_H #define _GRAPH_H #include "collections.h" typedef struct graph* Graph; int graph_size(Graph graph); BitSet graph_newNodeSet(Graph graph, int arena); Graph graph_new(void); BitSet graph_children(Graph graph, int parent); BitSet graph_parents(Graph graph, int child); int graph_addNode(Graph graph, void* data); void graph_addEdge(Graph graph, int from, int to); void graph_close(Graph graph, void* (* merge)(void* node1, void* node2)); void* graph_node(Graph graph, int index); /** ensure all nodes are non-null and parents and children bitsets match. */ void integrity(Graph graph); #endif