Since configuration data need to be navigated and examined separately from their realization as a plot or application, it seems best to represent configurations as XML DOM elements. Then the configuration library is a single XML document comprising all of the configuration elements, and the library can be browsed, modified, saved, and restored through the XML DOM API.
The BOOST library (http://www.boost.org) has a serialization package which supports XML as the archive format. I investigated this package because it seemed like an easy way to archive objects with very little overhead and without introducing an XML library. However, since DOM seems to be ideal for representing the configuration library, we may as well use a separate XML library and the DOM interface. Almost certainly that XML library will be xerces-c.
Related to the drill-down example (see the section called “Saving a Plot Window Configuration”), configurable components like
plots and plotwindows will need an interface to indicate whether they can
accept different kinds of configuration elements. For example, a Plot
cannot accept a DataDomain
configuration, at least
not as we have things now where the DataDomain
belongs to the PlotPage
. However a
PlotPage
can accept a DataDomain. So could a
PlotWindow
actually: the
PlotWindow
could apply the DataDomain to all of its
pages. Drill-down could go all the way into the data model for a plot and
then down to the individual DataSet instances.
More and more the configuration library seems like a cut-and-paste buffer.