/*************************************************************************** * Copyright (C) 2006 Nicolas Hadacek * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * ***************************************************************************/ #include "xml_to_data/prog_xml_to_data.h" #include "progs/icd2/base/icd2_data.h" //----------------------------------------------------------------------------- namespace Icd2 { class XmlToData : public Programmer::XmlToData { public: XmlToData() : Programmer::XmlToData("icd2", "Icd2") {} private: virtual uint familyIndex(const TQString &family) const; virtual void parseData(TQDomElement element, Data &data); virtual void outputData(const Data &data, TQTextStream &s) const; }; uint Icd2::XmlToData::familyIndex(const TQString &family) const { uint i = 0; for (; Icd2::FAMILY_DATA[i].efid!=0; i++) if ( family==Icd2::FAMILY_DATA[i].name ) break; if ( Icd2::FAMILY_DATA[i].efid==0 ) tqFatal(TQString("Family \"%1\" is unknown").arg(family)); return i; } void Icd2::XmlToData::parseData(TQDomElement element, Data &data) { bool ok; data.famid = fromHexLabel(element.attribute("famid"), 2, &ok); if ( !ok ) tqFatal("Missing or malformed famid attribute"); data.debugSupport = extractSupport(element.attribute("debug_support_type")); } void Icd2::XmlToData::outputData(const Data &data, TQTextStream &s) const { s << toHexLabel(data.famid, 2) << ", "; s << "::Group::Support::Type(" << data.debugSupport.type() << ")"; } } // namespace //----------------------------------------------------------------------------- XML_MAIN(Icd2::XmlToData)