/* Graph showing inheritance with the current PyLink protocol modules:
 * Update using: dot -Tsvg protocol-modules.dot > protocol-modules.svg
 */

digraph G {

	edge [ penwidth=0.75, color="#111111CC" ];
	subgraph cluster_core {
		label="Core classes (pylinkirc.classes)";
		style="filled";
		node [style="filled",color="white"];
		color="#90EE90";

		"PyLinkNetworkCore" -> "PyLinkNetworkCoreWithUtils" -> "IRCNetwork";
	}

	subgraph cluster_helper {
		label="Protocol module helpers\n(pylinkirc.protocols.ircs2s_common)";
		style="filled";
		node [style="filled",color="white"];
		color="lightblue";

		"IRCNetwork" -> "IRCCommonProtocol" -> "IRCS2SProtocol" -> "TS6BaseProtocol";

		subgraph cluster_helper {
			label="pylinkirc.protocols.ts6_common";
			style="filled";
			color="lightcyan";

			"TS6BaseProtocol";
		}
	}

	subgraph cluster_pluggable {
		label="Complete protocol modules (pylinkirc.protocols.*)";
		style="filled";
		node [style="filled",color="white"];
		color="khaki";

		"IRCS2SProtocol" -> "p10";
		"IRCS2SProtocol" -> "ngircd";
		"TS6BaseProtocol" -> "ts6" -> "hybrid";
		"TS6BaseProtocol" -> "inspircd";
		"TS6BaseProtocol" -> "unreal";
		"IRCCommonProtocol" -> "clientbot";
	}
}