/* Graph for the PyLink Application Structure:
 * Update using: dot -Tpng core-structure.dot > core-structure.png
 */

digraph G {
	ratio = 0.8; /* make the graph wider than tall */
	subgraph cluster_core {
		label="PyLink Application Structure";
		style="filled";
		node [style="filled",color="white"];
		color="lightblue";

		"IRC objects" -> "Protocol modules" [label="Data relayed"]
		"Protocol modules" -> "PyLink hooks" -> Plugins;
		"IRC objects" -> "PyLink hooks";
		"Main program" -> "IRC objects" [color=indigo] [label="One per network\nspawned"] [fontcolor=indigo];
		"Main program" -> "IRC objects" [color=indigo];
		"Main program" -> "IRC objects" [color=indigo];
		"Protocol modules" -> "IRC objects" [label="States updated"] [color=darkgreen] [fontcolor=darkgreen];
		"Main program" -> Plugins [label="Plugin loaders"];
	}

	"Protocol modules" -> "IRCds" -> "Protocol modules";
	Plugins -> "Protocol modules" [label="Communication via\nIRC command\nsenders"] [color=navyblue] [fontcolor=navyblue];
	Plugins -> "Main program" [label="Registers commands\n& hook handlers"] [color=brown] [fontcolor=brown];

}