Gyoto
|
XML input/output. More...
#include <GyotoFactory.h>
Public Member Functions | |
Factory (char *filename) | |
Factory (SmartPointer< Scenery > sc) | |
Factory (SmartPointer< Metric::Generic > gg) | |
Factory (SmartPointer< Astrobj::Generic > ao) | |
Factory (SmartPointer< Spectrum::Generic > sp) | |
Factory (SmartPointer< Screen > screen) | |
Factory (SmartPointer< Photon > photon) | |
Factory (SmartPointer< Spectrometer > Spectrometer) | |
const std::string | getKind () |
Name of TOP-LEVEL object (Scenery, Metric, Astrobj...) | |
Gyoto::SmartPointer < Gyoto::Scenery > | getScenery () |
Gyoto::SmartPointer < Gyoto::Metric::Generic > | getMetric () |
Gyoto::SmartPointer < Gyoto::Screen > | getScreen () |
Gyoto::SmartPointer < Gyoto::Astrobj::Generic > | getAstrobj () |
Gyoto::SmartPointer < Gyoto::Photon > | getPhoton () |
Gyoto::SmartPointer < Gyoto::Spectrum::Generic > | getSpectrum () |
Gyoto::SmartPointer < Gyoto::Astrobj::Properties > | getAstrobjProperties () |
void | write (const char *const fname=0) |
std::string | format () |
void | setMetric (SmartPointer< Metric::Generic > gg, xercesc::DOMElement *el) |
void | setAstrobj (SmartPointer< Astrobj::Generic > ao, xercesc::DOMElement *el) |
void | setScreen (SmartPointer< Screen > scr, xercesc::DOMElement *el) |
void | setContent (std::string content, xercesc::DOMElement *el) |
void | setParameter (std::string name, xercesc::DOMElement *pel) |
void | setParameter (std::string name, double value, xercesc::DOMElement *pel) |
void | setParameter (std::string name, int value, xercesc::DOMElement *pel) |
void | setParameter (std::string name, unsigned int value, xercesc::DOMElement *pel) |
void | setParameter (std::string name, long value, xercesc::DOMElement *pel) |
void | setParameter (std::string name, unsigned long value, xercesc::DOMElement *pel) |
void | setParameter (std::string name, std::string sval, xercesc::DOMElement *) |
void | setParameter (std::string, double val[], size_t, xercesc::DOMElement *, FactoryMessenger **child=NULL) |
std::string | fullPath (std::string relpath) |
Protected Attributes | |
xercesc::ErrorHandler * | reporter_ |
xercesc::DOMDocument * | doc_ |
xercesc::DOMElement * | root_ |
xercesc::XercesDOMParser * | parser_ |
xercesc::DOMXPathNSResolver * | resolver_ |
xercesc::DOMImplementation * | impl_ |
xercesc::DOMElement * | gg_el_ |
xercesc::DOMElement * | obj_el_ |
xercesc::DOMElement * | ph_el_ |
SmartPointer< Scenery > | scenery_ |
SmartPointer< Metric::Generic > | gg_ |
SmartPointer< Screen > | screen_ |
SmartPointer< Astrobj::Generic > | obj_ |
SmartPointer< Photon > | photon_ |
SmartPointer< Spectrometer > | spectro_ |
std::string | filename_ |
std::string | kind_ |
Private Member Functions | |
void | setReporter (xercesc::ErrorHandler *) |
xercesc::DOMElement * | getRoot () |
xercesc::DOMDocument * | getDoc () |
Friends | |
class | Gyoto::FactoryMessenger |
XML input/output.
The Factory is responsible from building objects from their XML description, and from saving an XML description of existing objects. Since the Factory doesn't know how to build the variety of objects available in Gyoto and in external plug-ins, the Factory orders Metric, Astrobj and Spectrum objects from registered subcontractors (see SmartPointee::Subcontractor_t). The factory an the various subcontractors communicate through a FactoryMessenger.
To read an XML file, you simply create an instance of the Factory with a filename, and get whichever object type you are interested in:
or, for a single object and without checking the kind (getKind()) first:
Writing an object to a fie is even easier. Assuming "object" below is a Gyoto::SmartPointer<class> where "class" is one of Scenery, Metric::Generic, Astrobj::Generic, Spectrum::Generic, Screen, Photon or Spectrometer:
or, for short:
std::string Gyoto::Factory::fullPath | ( | std::string | relpath | ) |
Input is path relative to XML file. Output is absolute path to same file.