SmartPtr<AttributeSet> defaults = AttributeSet::create();  getAttribute(elem, ATTRIBUTE_SIGNATURE(MathML, Operator, form), defaults); getAttribute(elem, ATTRIBUTE_SIGNATURE(MathML, Operator, fence), defaults); getAttribute(elem, ATTRIBUTE_SIGNATURE(MathML, Operator, separator), defaults); getAttribute(elem, ATTRIBUTE_SIGNATURE(MathML, Operator, lspace), defaults); getAttribute(elem, ATTRIBUTE_SIGNATURE(MathML, Operator, rspace), defaults); getAttribute(elem, ATTRIBUTE_SIGNATURE(MathML, Operator, stretchy), defaults); getAttribute(elem, ATTRIBUTE_SIGNATURE(MathML, Operator, symmetric), defaults); getAttribute(elem, ATTRIBUTE_SIGNATURE(MathML, Operator, maxsize), defaults); getAttribute(elem, ATTRIBUTE_SIGNATURE(MathML, Operator, minsize), defaults); getAttribute(elem, ATTRIBUTE_SIGNATURE(MathML, Operator, largeop), defaults); getAttribute(elem, ATTRIBUTE_SIGNATURE(MathML, Operator, movablelimits), defaults); getAttribute(elem, ATTRIBUTE_SIGNATURE(MathML, Operator, accent), defaults);  dictionary.add(logger, opName, Model::getAttribute(elem, "form"), defaults);
const String attr = Model::getAttribute(elem, "verbosity"); if (attr.empty()) logger.out(LOG_WARNING, "malformed `logger' element, cannot find `verbosity' attribute"); else { logger.setLogLevel(LogLevelId(atoi(attr.c_str()))); logger.out(LOG_DEBUG, "logger verbosity set to %d", logger.getLogLevel()); } } else if (name == "dictionary-path") { const String path = Model::getElementValue(elem); if (!path.empty()) { logger.out(LOG_DEBUG, "found dictionary path `%s'", path.c_str()); conf.addDictionary(path); }
  parse(const AbstractLogger& logger, MathMLOperatorDictionary& dictionary, const typename Model::Element& root)  {    for (typename Model::ElementIterator iter(root, "*", "operator"); iter.more(); iter.next())      {	typename Model::Element elem = iter.element();	const String opName = Model::getAttribute(elem, "name");      	if (!opName.empty())	  {	    SmartPtr<AttributeSet> defaults = AttributeSet::create();	  	    getAttribute(elem, ATTRIBUTE_SIGNATURE(MathML, Operator, form), defaults);	    getAttribute(elem, ATTRIBUTE_SIGNATURE(MathML, Operator, fence), defaults);	    getAttribute(elem, ATTRIBUTE_SIGNATURE(MathML, Operator, separator), defaults);	    getAttribute(elem, ATTRIBUTE_SIGNATURE(MathML, Operator, lspace), defaults);	    getAttribute(elem, ATTRIBUTE_SIGNATURE(MathML, Operator, rspace), defaults);	    getAttribute(elem, ATTRIBUTE_SIGNATURE(MathML, Operator, stretchy), defaults);	    getAttribute(elem, ATTRIBUTE_SIGNATURE(MathML, Operator, symmetric), defaults);	    getAttribute(elem, ATTRIBUTE_SIGNATURE(MathML, Operator, maxsize), defaults);	    getAttribute(elem, ATTRIBUTE_SIGNATURE(MathML, Operator, minsize), defaults);	    getAttribute(elem, ATTRIBUTE_SIGNATURE(MathML, Operator, largeop), defaults);	    getAttribute(elem, ATTRIBUTE_SIGNATURE(MathML, Operator, movablelimits), defaults);	    getAttribute(elem, ATTRIBUTE_SIGNATURE(MathML, Operator, accent), defaults);	  	    dictionary.add(logger, opName, Model::getAttribute(elem, "form"), defaults);	  } 	else	  logger.out(LOG_WARNING, "operator dictionary: could not find operator name");      }  }