Implementation Notes

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.