//========================================================================== // ASTBUILDER.H - part of // // OMNeT++/OMNEST // Discrete System Simulation in C++ // //========================================================================== /*--------------------------------------------------------------* Copyright (C) 2002-2017 Andras Varga Copyright (C) 2006-2017 OpenSim Ltd. This file is distributed WITHOUT ANY WARRANTY. See the file `license' for details on this and other legal matters. *--------------------------------------------------------------*/ #ifndef __OMNETPP_NEDXML_ASTBUILDER_H #define __OMNETPP_NEDXML_ASTBUILDER_H #include "errorstore.h" #include "astnode.h" #include "saxparser.h" namespace omnetpp { namespace nedxml { /** * @brief SAX handler (to be used with SAXParser) that builds an AST. * * Elements of the tree are subclassed from ASTNode; * ASTNodeFactory is used to actually create the objects. * * Usage: *
 *    NEDSAXHandler nedsaxhandler(filename);
 *    SAXParser parser;
 *
 *    parser.setHandler(&nedsaxhandler);
 *    parser.parse(filename);
 *
 *    ASTNode *result = nedsaxhandler.getTree();
 * 
* * @ingroup XMLParser */ class NEDXML_API ASTBuilder : public SAXHandler { ASTNode *root; ASTNode *current; const char *sourceFilename; ErrorStore *errors; public: /** * Constructor. Filename is necessary to create correct src-loc info. */ ASTBuilder(const char *filename, ErrorStore *e); /** * Destructor */ virtual ~ASTBuilder(); /** * Returns the object tree that was built up during XML parsing. */ virtual ASTNode *getTree(); /** @name SAX event handlers */ //@{ virtual void startElement(const char *name, const char **atts) override; virtual void endElement(const char *name) override; virtual void characterData(const char *s, int len) override; virtual void processingInstruction(const char *target, const char *data) override; virtual void comment(const char *data) override; virtual void startCdataSection() override; virtual void endCdataSection() override; //@} }; } // namespace nedxml } // namespace omnetpp #endif