Revision 1 (by moose, 2006/03/06 10:00:33) Initial Import
 TODO
======

o Plugins
  - install/unistall
  - enable/disable
  - dependencies
o Threads/Processes
  - pause/resume/cancel
  - dependencies
o Demux






Plugin *toload[];
foreach p (toload) {
	foreach dep (p->dependencies()) {
		if(!app->pluginIsLoaded(dep))
			next p;
	}
}

Carl Olson:
-----------
Insert plugins in unloaded list
While unloaded list is not empty
   Foreach plugin in unloaded list
      Foreach dependency
         If dependency not in loaded list
          and dependency not in unloaded list
            Insert dependency in unloaded list
      If all dependencies are in loaded list
         Load plugin
         Remove from unloaded list.
         Add to loaded list.

list unloaded;
// insert plugins in unloaded list

while(!unloaded->empty) {
	foreach plugin (unloaded) {
		foreach dep (plugin->dependency) {
			if(!loaded->in(dep) && !unloaded->in(dep))
				unloaded->add(dep);
		}

	}
}