This is a base class for processing XML elements in the DDD. More...
#include <DDXMLElement.h>
Public Member Functions | |
void | appendText (const std::string &inText) |
append to the current (i.e. most recently added) More... | |
virtual std::vector< DDXMLAttribute >::const_iterator | begin (void) |
virtual void | clear (void) |
clear this element's contents. More... | |
DDXMLElement (DDLElementRegistry *myreg) | |
Constructor. More... | |
DDXMLElement (DDLElementRegistry *myreg, const bool &clearme) | |
Constructor for autoClear element. More... | |
virtual std::vector< DDXMLAttribute >::const_iterator | end (void) |
virtual const std::string & | get (const std::string &name, size_t aIndex=0) const |
Returns a specific value from the aIndex set of attributes. More... | |
virtual const std::string & | getAttribute (const std::string &name) const |
Access to attributes by name. More... | |
virtual const DDXMLAttribute & | getAttributeSet (size_t aIndex=0) const |
Get a "row" of attributes, i.e. one attribute set. More... | |
virtual const DDName | getDDName (const std::string &defaultNS, const std::string &attname=std::string("name"), size_t aIndex=0) |
const std::string | getText (size_t tindex=0) const |
retrieve the text blob. More... | |
virtual std::vector< std::string > | getVectorAttribute (const std::string &name) |
Returns a set of values as a std::vector of strings, given the attribute name. More... | |
virtual bool | gotText (void) const |
gotText()? kind of like gotMilk? Yes = text has already been encountered. More... | |
virtual bool | isEmpty (void) const |
Have any elements of this type been encountered but not processed? More... | |
void | loadAttributes (const std::string &elemName, const std::vector< std::string > &names, const std::vector< std::string > &values, const std::string &nmspace, DDCompactView &cpv) |
Load the element attributes. More... | |
void | loadText (const std::string &inText) |
Used to load both text and XML comments into this object. More... | |
std::vector< DDXMLAttribute >::const_iterator & | operator++ (int inc) |
Allow the elements of this type to be iterated over using ++ operator. More... | |
const std::string & | parent (void) const |
access to parent element name More... | |
virtual void | preProcessElement (const std::string &name, const std::string &nmspace, DDCompactView &cpv) |
Called by loadAttributes AFTER attributes are loaded. More... | |
virtual void | processElement (const std::string &name, const std::string &nmspace, DDCompactView &cpv) |
Processing the element. More... | |
void | setParent (const std::string &pename) |
Set parent element name to central list of names. More... | |
void | setSelf (const std::string &sename) |
Set self element name to central list of names. More... | |
virtual size_t | size (void) const |
Number of elements accumulated. More... | |
virtual void | stream (std::ostream &os) const |
Allow for the elements to have their own streaming method, but also provide a default. More... | |
void | throwError (const std::string &keyMessage) const |
format std::string for throw an error. More... | |
virtual | ~DDXMLElement (void)=default |
Destructor. More... | |
Protected Attributes | |
DDLElementRegistry * | myRegistry_ |
Private Member Functions | |
void | appendAttributes (std::vector< std::string > &tv, const std::string &name) |
behind the scenes appending to pAttributes... More... | |
Private Attributes | |
AttrAccumType | attributeAccumulator_ |
std::vector< DDXMLAttribute > | attributes_ |
bool | autoClear_ |
std::string | myElement_ |
std::vector< DDXMLAttribute >::const_iterator | myIter_ |
std::string | parentElement_ |
std::vector< std::string > | text_ |
Friends | |
std::ostream & | operator<< (std::ostream &os, const DDXMLElement &element) |
This is a base class for processing XML elements in the DDD.
Component of DDL XML Parsing
A DDXMLElement stores all the attributes and text of an XML element. It is designed to accumulate this information unless cleared. In other words, it accumulates sets of attributes, and allows the appending of text indefinitely, as opposed to, say, creating another class which is designed to hold a std::vector of single element information. This is contrary to the way that XML normally defines an element, but for DDL, this works fine.
One of the things that one needs to build in to each subclass is when an element needs to be cleared. For some, emptying the std::vectors should happen at the end (of the processElement method). For some, clearing is ONLY done by the parent. For example, SpecPar and its child PartSelector. or Polyhedra and its child ZSection. In some cases elements can be in one or more parent elements as well as on their own (Vector, Map). For these the processing currently depends on the parent so one must clear only as appropriate.
Definition at line 48 of file DDXMLElement.h.
DDXMLElement::DDXMLElement | ( | DDLElementRegistry * | myreg | ) |
DDXMLElement::DDXMLElement | ( | DDLElementRegistry * | myreg, |
const bool & | clearme | ||
) |
|
virtualdefault |
Destructor.
|
private |
behind the scenes appending to pAttributes...
Definition at line 231 of file DDXMLElement.cc.
References attributes_, end(), and mps_fire::i.
Referenced by getVectorAttribute().
void DDXMLElement::appendText | ( | const std::string & | inText | ) |
append to the current (i.e. most recently added)
Definition at line 180 of file DDXMLElement.cc.
References mps_alisetup::msg, AlCaHLTBitMon_QueryRunRegistry::string, text_, and throwError().
|
virtual |
Definition at line 252 of file DDXMLElement.cc.
References attributes_, and myIter_.
|
virtual |
clear this element's contents.
Definition at line 54 of file DDXMLElement.cc.
References attributeAccumulator_, attributes_, AlCaHLTBitMon_QueryRunRegistry::string, and text_.
Referenced by DDLVector::clearall(), Vispa.Views.WidgetView.WidgetView::closeEvent(), Vispa.Views.BoxDecayView.BoxDecayView::closeEvent(), Vispa.Share.FindAlgorithm.FindAlgorithm::findUsingFindDialog(), DDLMultiUnionSolid::processElement(), DDLPgonGenerator::processElement(), DDLRotationSequence::processElement(), DDLSpecPar::processElement(), DDLAlgorithm::processElement(), DDLRotationByAxis::processElement(), DDLString::processElement(), DDLBooleanSolid::processElement(), DDLDivision::processElement(), DDLElementaryMaterial::processElement(), DDLPosPart::processElement(), DDLPolyGenerator::processElement(), DDLRotationAndReflection::processElement(), DDLNumeric::processElement(), DDLCompositeMaterial::processElement(), DDLLogicalPart::processElement(), DDLVector::processElement(), DDLMap::processElement(), processElement(), Vispa.Views.LineDecayView.LineDecayView::setDataObjects(), Vispa.Views.WidgetView.WidgetView::setDataObjects(), DDLMaterial::setReference(), DDLSolid::setReference(), BeautifulSoup.Tag::setString(), Vispa.Views.TreeView.TreeView::updateContent(), Vispa.Views.TableView.TableView::updateContent(), Vispa.Views.BoxDecayView.BoxDecayView::updateContent(), and Vispa.Views.PropertyView.PropertyView::updateContent().
|
virtual |
Definition at line 259 of file DDXMLElement.cc.
References attributes_, and myIter_.
Referenced by appendAttributes(), Types.LuminosityBlockRange::cppID(), Types.EventRange::cppID(), and get().
|
virtual |
Returns a specific value from the aIndex set of attributes.
Definition at line 112 of file DDXMLElement.cc.
References attributes_, end(), mps_alisetup::msg, dataset::name, AlCaHLTBitMon_QueryRunRegistry::string, and throwError().
Referenced by Options.Options::__getitem__(), betterConfigParser.BetterConfigParser::__updateDict(), util.rrapi.RRApi::columns(), rrapi.RRApi::columns(), util.rrapi.RRApi::count(), rrapi.RRApi::count(), rrapi.RRApi::data(), util.rrapi.RRApi::data(), betterConfigParser.BetterConfigParser::getCompares(), betterConfigParser.BetterConfigParser::getGeneral(), betterConfigParser.BetterConfigParser::getResultingSection(), rrapi.RRApi::report(), util.rrapi.RRApi::report(), rrapi.RRApi::reports(), util.rrapi.RRApi::reports(), util.rrapi.RRApi::tables(), rrapi.RRApi::tables(), rrapi.RRApi::tags(), util.rrapi.RRApi::tags(), rrapi.RRApi::templates(), util.rrapi.RRApi::templates(), util.rrapi.RRApi::workspaces(), and rrapi.RRApi::workspaces().
|
virtual |
Access to attributes by name.
Definition at line 63 of file DDXMLElement.cc.
References attributes_, and AlCaHLTBitMon_QueryRunRegistry::string.
|
virtual |
Get a "row" of attributes, i.e. one attribute set.
Definition at line 72 of file DDXMLElement.cc.
References attributes_.
Referenced by DDLBooleanSolid::dumpBooleanSolid(), DDLMultiUnionSolid::dumpMultiUnionSolid(), DDLRotationAndReflection::isLeftHanded(), DDLRotationAndReflection::makeX(), DDLRotationAndReflection::makeY(), DDLRotationAndReflection::makeZ(), DDLPgonGenerator::processElement(), DDLMultiUnionSolid::processElement(), DDLTubs::processElement(), DDLOrb::processElement(), DDLTorus::processElement(), DDLParallelepiped::processElement(), DDLPseudoTrap::processElement(), DDLTrapezoid::processElement(), DDLEllipsoid::processElement(), DDLEllipticalTube::processElement(), DDLSphere::processElement(), DDLAlgorithm::processElement(), DDLRotationByAxis::processElement(), DDLSpecPar::processElement(), DDLBox::processElement(), DDLCone::processElement(), DDLString::processElement(), DDLElementaryMaterial::processElement(), DDLBooleanSolid::processElement(), DDLPolyGenerator::processElement(), DDLPosPart::processElement(), DDLRotationAndReflection::processElement(), DDLDivision::processElement(), DDLNumeric::processElement(), DDLCompositeMaterial::processElement(), DDLLogicalPart::processElement(), DDLVector::processElement(), DDLMap::processElement(), DDLMaterial::setReference(), and DDLSolid::setReference().
|
virtual |
Definition at line 79 of file DDXMLElement.cc.
References attributes_, mps_alisetup::msg, dataset::name, AlCaHLTBitMon_QueryRunRegistry::string, and throwError().
Referenced by DDLRotationAndReflection::isLeftHanded(), DDLMultiUnionSolid::processElement(), DDLPgonGenerator::processElement(), DDLTubs::processElement(), DDLPseudoTrap::processElement(), DDLTrapezoid::processElement(), DDLOrb::processElement(), DDLTorus::processElement(), DDLParallelepiped::processElement(), DDLEllipsoid::processElement(), DDLEllipticalTube::processElement(), DDLReflectionSolid::processElement(), DDLShapelessSolid::processElement(), DDLSphere::processElement(), DDLRotationSequence::processElement(), DDLAlgorithm::processElement(), DDLRotationByAxis::processElement(), DDLSpecPar::processElement(), DDLCone::processElement(), DDLBox::processElement(), DDLString::processElement(), DDLRotationAndReflection::processElement(), DDLPolyGenerator::processElement(), DDLBooleanSolid::processElement(), DDLElementaryMaterial::processElement(), DDLDivision::processElement(), DDLNumeric::processElement(), DDLCompositeMaterial::processElement(), DDLLogicalPart::processElement(), DDLVector::processElement(), and DDLMap::processElement().
const std::string DDXMLElement::getText | ( | size_t | tindex = 0 | ) | const |
retrieve the text blob.
Definition at line 194 of file DDXMLElement.cc.
References mps_alisetup::msg, AlCaHLTBitMon_QueryRunRegistry::string, text_, and throwError().
Referenced by DDLVector::processElement(), and DDLMap::processElement().
|
virtual |
Returns a set of values as a std::vector of strings, given the attribute name.
Definition at line 136 of file DDXMLElement.cc.
References appendAttributes(), attributeAccumulator_, attributes_, and dataset::name.
|
virtual |
gotText()? kind of like gotMilk? Yes = text has already been encountered.
Definition at line 204 of file DDXMLElement.cc.
References text_.
|
virtual |
Have any elements of this type been encountered but not processed?
Definition at line 291 of file DDXMLElement.cc.
References attributes_.
Referenced by plotting.Plot::clone().
void DDXMLElement::loadAttributes | ( | const std::string & | elemName, |
const std::vector< std::string > & | names, | ||
const std::vector< std::string > & | values, | ||
const std::string & | nmspace, | ||
DDCompactView & | cpv | ||
) |
Load the element attributes.
The loadAttributes method loads the attributes of the element into a std::map<std::string, std::string> which is used to store Name-Value pairs. It takes as input two std::vectors of strings containing "synchronized" names and values.
In the SAX2 based calling process, this is done on a startElement event.
Definition at line 35 of file DDXMLElement.cc.
References attributes_, mps_fire::i, and preProcessElement().
Referenced by DDLRotationByAxis::processElement().
void DDXMLElement::loadText | ( | const std::string & | inText | ) |
Used to load both text and XML comments into this object.
At the current time this is done simply as a way for the user of this class to accumulate text and/or comments as std::vector of strings, each one matching the std::vector of attributes. Therefore loadText starts a new text storage.
Definition at line 174 of file DDXMLElement.cc.
References text_.
Referenced by processElement().
std::vector< DDXMLAttribute >::const_iterator & DDXMLElement::operator++ | ( | int | inc | ) |
Allow the elements of this type to be iterated over using ++ operator.
Definition at line 266 of file DDXMLElement.cc.
References myIter_, and AlCaHLTBitMon_QueryRunRegistry::string.
const std::string & DDXMLElement::parent | ( | void | ) | const |
access to parent element name
Definition at line 273 of file DDXMLElement.cc.
References parentElement_.
Referenced by Vispa.Gui.ConnectableWidget.ConnectableWidget::addMenuEntry(), Vispa.Views.LineDecayView.LineDecayContainer::applyFilter(), Vispa.Views.BoxDecayView.BoxDecayContainer::arrangeUsingRelations(), Vispa.Views.BoxDecayView.BoxDecayContainer::autolayoutAlgorithm(), Vispa.Gui.ZoomableScrollableWidgetOwner.ZoomableScrollableWidgetOwner::autosizeScrollArea(), Vispa.Views.BoxDecayView.BoxDecayContainer::autosizeScrollArea(), Vispa.Gui.PortWidget.PortWidget::connectionPoint(), Vispa.Main.StartupScreen.StartupScreen::createDescriptionWidget(), Vispa.Views.BoxDecayView.BoxDecayContainer::dataAccessor(), Vispa.Views.LineDecayView.LineDecayContainer::dataAccessor(), Vispa.Views.LineDecayView.DecayLine::dataAccessor(), Vispa.Views.LineDecayView.LineDecayContainer::delete(), Vispa.Views.LineDecayView.DecayNode::delete(), Vispa.Views.LineDecayView.DecayLine::delete(), Vispa.Gui.VispaWidget.VispaWidget::delete(), Vispa.Gui.VispaWidget.VispaWidget::dragWidget(), Vispa.Share.ImageExporter.ImageExporter::exportImageDialog(), Vispa.Views.LineDecayView.DecayLine::extendedSize(), Vispa.Gui.VispaWidget.VispaWidget::keyPressEvent(), Vispa.Gui.MenuWidget.MenuWidget::leaveEvent(), Vispa.Gui.ConnectableWidget.ConnectableWidget::leaveEvent(), Vispa.Gui.PortWidget.PortWidget::moduleParent(), Vispa.Gui.WidgetContainer.WidgetContainer::mouseDoubleClickEvent(), Vispa.Gui.VispaWidget.VispaWidget::mouseDoubleClickEvent(), Vispa.Gui.PortConnection.PointToPointConnection::mousePressEvent(), Vispa.Gui.VispaWidget.VispaWidget::mousePressEvent(), Vispa.Views.LineDecayView.ParticleWidget::mousePressEvent(), Vispa.Views.LineDecayView.DecayNode::move(), Vispa.Views.LineDecayView.LineDecayContainer::noDecorationsMode(), Vispa.Views.LineDecayView.LineDecayContainer::operationId(), Vispa.Views.LineDecayView.DecayLine::paint(), Vispa.Gui.VispaWidget.VispaWidget::paintEvent(), Vispa.Gui.ConnectableWidget.ConnectableWidget::positionizeMenuWidget(), DDLRotationByAxis::processElement(), DDLString::processElement(), DDLDivision::processElement(), DDLNumeric::processElement(), DDLVector::processElement(), DDLMap::processElement(), Vispa.Views.LineDecayView.DecayLine::qtLineStyle(), Vispa.Views.WidgetView.WidgetView::restoreSelection(), Vispa.Views.WidgetView.WidgetView::select(), Vispa.Gui.PortConnection.PointToPointConnection::select(), Vispa.Gui.VispaWidget.VispaWidget::select(), Vispa.Views.LineDecayView.LineDecayContainer::select(), DDLSolid::setReference(), Vispa.Views.LineDecayView.LineDecayContainer::sizeHint(), Vispa.Views.LineDecayView.LineDecayContainer::tabController(), Vispa.Views.BoxDecayView.BoxDecayContainer::toggleCollapsed(), Vispa.Views.LineDecayView.DecayNode::unite(), Vispa.Views.PropertyView.PropertyView::valueChanged(), Vispa.Views.BoxDecayView.BoxDecayContainer::widgetByObject(), Vispa.Gui.VispaWidgetOwner.VispaWidgetOwner::widgetDoubleClicked(), and Vispa.Gui.VispaWidgetOwner.VispaWidgetOwner::widgetDragged().
|
virtual |
Called by loadAttributes AFTER attributes are loaded.
The preProcessElement method can assume that the attributes are loaded and perform any code that is necessary at the start of an element.
This would allow users to call their own code to setup anything necessary for the continued processing of the child elements.
Reimplemented in DDLMap, DDLVector, DDLLogicalPart, DDLCompositeMaterial, DDLNumeric, DDLPolyGenerator, DDLBooleanSolid, DDLDivision, DDLPosPart, DDLString, DDLAlgorithm, DDLRotationByAxis, DDLShapelessSolid, DDLRotationSequence, DDLReflectionSolid, DDLPgonGenerator, and DDLMultiUnionSolid.
Definition at line 30 of file DDXMLElement.cc.
Referenced by loadAttributes().
|
virtual |
Processing the element.
The processElement method completes any necessary work to process the XML element.
For example, this can be used to call the DDCore to make the geometry in memory. There is a default for this so that if not declared in the inheriting class, no processing is done.
Reimplemented in DDLMap, DDLVector, DDLLogicalPart, DDLCompositeMaterial, DDLNumeric, DDLBooleanSolid, DDLDivision, DDLElementaryMaterial, DDLPolyGenerator, DDLPosPart, DDLRotationAndReflection, DDLBox, DDLCone, DDLString, DDLAlgorithm, DDLRotationByAxis, DDLSpecPar, DDLRotationSequence, DDLEllipsoid, DDLEllipticalTube, DDLReflectionSolid, DDLShapelessSolid, DDLSphere, DDLOrb, DDLParallelepiped, DDLPseudoTrap, DDLTorus, DDLTrapezoid, DDLTubs, DDLMultiUnionSolid, and DDLPgonGenerator.
Definition at line 167 of file DDXMLElement.cc.
References autoClear_, clear(), loadText(), and AlCaHLTBitMon_QueryRunRegistry::string.
void DDXMLElement::setParent | ( | const std::string & | pename | ) |
Set parent element name to central list of names.
Definition at line 279 of file DDXMLElement.cc.
References parentElement_.
Referenced by lumiQTWidget.LumiCanvas::__init__().
void DDXMLElement::setSelf | ( | const std::string & | sename | ) |
Set self element name to central list of names.
Definition at line 285 of file DDXMLElement.cc.
References myElement_.
|
virtual |
Number of elements accumulated.
Definition at line 246 of file DDXMLElement.cc.
References attributes_.
Referenced by ntupleDataFormat._Collection::__iter__(), and ntupleDataFormat._Collection::__len__().
|
virtual |
Allow for the elements to have their own streaming method, but also provide a default.
Definition at line 218 of file DDXMLElement.cc.
References attributes_.
Referenced by operator<<().
void DDXMLElement::throwError | ( | const std::string & | keyMessage | ) | const |
format std::string for throw an error.
Definition at line 297 of file DDXMLElement.cc.
References Exception, mps_alisetup::msg, myElement_, and AlCaHLTBitMon_QueryRunRegistry::string.
Referenced by appendText(), DDLVector::errorOut(), DDLMap::errorOut(), get(), getDDName(), getText(), DDLDivision::makeDivider(), DDLMultiUnionSolid::processElement(), DDLPgonGenerator::processElement(), DDLTubs::processElement(), DDLTrapezoid::processElement(), DDLBooleanSolid::processElement(), DDLPolyGenerator::processElement(), DDLDivision::processElement(), DDLRotationAndReflection::processElement(), DDLCompositeMaterial::processElement(), and DDLRotationByAxis::processOne().
|
friend |
Definition at line 211 of file DDXMLElement.cc.
|
private |
Definition at line 180 of file DDXMLElement.h.
Referenced by clear(), and getVectorAttribute().
|
private |
Definition at line 178 of file DDXMLElement.h.
Referenced by appendAttributes(), begin(), clear(), end(), get(), getAttribute(), getAttributeSet(), getDDName(), getVectorAttribute(), isEmpty(), loadAttributes(), size(), and stream().
|
private |
Definition at line 181 of file DDXMLElement.h.
Referenced by processElement().
|
private |
Definition at line 183 of file DDXMLElement.h.
Referenced by setSelf(), and throwError().
|
private |
Definition at line 182 of file DDXMLElement.h.
Referenced by begin(), end(), and operator++().
|
protected |
Definition at line 172 of file DDXMLElement.h.
Referenced by DDLVector::do_makeDouble(), DDLMap::do_makeDouble(), DDLBooleanSolid::dumpBooleanSolid(), DDLMultiUnionSolid::dumpMultiUnionSolid(), DDLRotationAndReflection::isLeftHanded(), DDLRotationAndReflection::makeX(), DDLRotationAndReflection::makeY(), DDLRotationAndReflection::makeZ(), DDLMultiUnionSolid::preProcessElement(), DDLPgonGenerator::preProcessElement(), DDLReflectionSolid::preProcessElement(), DDLRotationSequence::preProcessElement(), DDLAlgorithm::preProcessElement(), DDLShapelessSolid::preProcessElement(), DDLBooleanSolid::preProcessElement(), DDLPosPart::preProcessElement(), DDLPolyGenerator::preProcessElement(), DDLCompositeMaterial::preProcessElement(), DDLLogicalPart::preProcessElement(), DDLMultiUnionSolid::processElement(), DDLPgonGenerator::processElement(), DDLTubs::processElement(), DDLTrapezoid::processElement(), DDLOrb::processElement(), DDLTorus::processElement(), DDLParallelepiped::processElement(), DDLPseudoTrap::processElement(), DDLReflectionSolid::processElement(), DDLSphere::processElement(), DDLEllipsoid::processElement(), DDLEllipticalTube::processElement(), DDLRotationSequence::processElement(), DDLRotationByAxis::processElement(), DDLAlgorithm::processElement(), DDLSpecPar::processElement(), DDLCone::processElement(), DDLBox::processElement(), DDLRotationAndReflection::processElement(), DDLElementaryMaterial::processElement(), DDLDivision::processElement(), DDLBooleanSolid::processElement(), DDLPosPart::processElement(), DDLPolyGenerator::processElement(), DDLNumeric::processElement(), DDLCompositeMaterial::processElement(), DDLLogicalPart::processElement(), DDLVector::processElement(), DDLMap::processElement(), DDLRotationByAxis::processOne(), DDLMaterial::setReference(), and DDLSolid::setReference().
|
private |
Definition at line 184 of file DDXMLElement.h.
Referenced by parent(), and setParent().
|
private |
Definition at line 179 of file DDXMLElement.h.
Referenced by appendText(), clear(), getText(), gotText(), and loadText().