This is an attempt to document the lifecycles of the various datastructures in libgvc.
gvc ------------------------------------------------------------------------------
i/p file --------------------------------------------------- ------------------------
i/p graph ------------------------ ------------------------ ------------------------
jobset ------------------------ ------------------------ ------------------------
layout ------------------------ ------------------------ ----------- -----------
job ----------- ----------- ----------- ----------- ----------- -----------
render ----------- ----------- ----------- ----------- ----------- -----------
page -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
gvdevice ----------------------------------------------------------------- -----------
gvc - extends over all input files, all graphs, all layouts, all renderings
lasts for as long as the application is dealing with graphs
provides management of plugins which should be loaded just once per invocation
i/p file - can be more than one per gvc
i/p graph - can be more than one per i/p file
jobset - all layouts, all renderings of a single graph (not currently implemented)
layout - a dot, or neato, or etc layout of a single graph
job - a rendering of a single layout to a single gvdevice
possibly including multiple pages from a single rendering, or mutiple refresh renderings for callback events
render - rendering of the whole of single graph layout in a single format to a single device, possibly in multiple parts,
page or refresh - one part of a mutipart rendering
gvdevice - typically, one device per job.
in the case of multipage output, a single gvdevice can be used for mutiple jobs and jobsets.
a single format to a single file, or a single window on a desktop