//-------------------------------------------------------------------------- // // Environment: // This software is part of the EvtGen package developed jointly // for the BaBar and CLEO collaborations. If you use all or part // of it, please give an appropriate acknowledgement. // // Copyright Information: See EvtGen/COPYRIGHT // Copyright (C) 1998 Caltech, UCSB // // Module: EvtGen/EvtParserXml.hh // // Description: // // Modification history: // // DCC 24 October, 2011 Module created // //------------------------------------------------------------------------ #ifndef EVTPARSERXML_HH #define EVTPARSERXML_HH #include #include #include class EvtParserXml { public: EvtParserXml(); ~EvtParserXml(); bool open(const std::string filename); bool close(); bool readNextTag(); std::string getTagTitle() { return _tagTitle; } std::string getParentTagTitle(); int getLineNumber() { return _lineNo; } bool isTagInline() { return _inLineTag; } std::string readAttribute(std::string attribute, std::string defaultValue=""); bool readAttributeBool(std::string attribute, bool defaultValue=false); int readAttributeInt(std::string attribute, int defaultValue=-1); double readAttributeDouble(std::string attribute, double defaultValue=-1.); private: std::ifstream _fin; std::string _line; int _lineNo; std::string _tag; std::string _tagTitle; bool _inLineTag; std::vector _tagTree; bool processTagTree(); }; #endif