#ifndef GRAPH_H_INCLUDED
#define GRAPH_H_INCLUDED

#include "list.h"

/** Graph structure (forward declaration) */
struct s_graph;
typedef struct s_graph graph;

/** Creates a new graph. */
extern graph*         graphCreate(const void* name);

/** Connects two graphs in one direction. */
extern void           graphConnect(graph* src, const graph* dest);

/** Sets a color value for a certain graph node. */
extern void           graphColorNode(graph* src, unsigned long color);

/** Sets a name for the graph node. */
extern void           graphNameNode(graph* src, const void* name);

/** Returns a color value of a graph. */
extern unsigned long  graphGetColorNode(graph* src);

/** Returns the nodes name. */
extern void*          graphGetNameNode(graph* src);

/** Returns a list of all the other graphs that the node is connected to. */
extern list*          graphGetConnections(graph* src);

#endif