00001
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #ifndef _GEXF_PARSER_H
00030 #define _GEXF_PARSER_H
00031
00032 #include "gexf.h"
00033 #include "typedefs.h"
00034 #include "abstractparser.h"
00035 #include <libxml/xmlreader.h>
00036 #include <string>
00037
00038 namespace libgexf {
00039
00040 class Reader;
00041
00045 class GexfParser: public AbstractParser {
00046 public:
00047 GexfParser();
00048
00052 GexfParser(const GexfParser& orig);
00053
00054 virtual ~GexfParser();
00055
00056 void bind(libgexf::GEXF* gexf);
00057 void processNode(xmlTextReaderPtr reader, const xmlChar* const name);
00058 private:
00059 void processGEXFNode(xmlTextReaderPtr reader);
00060 void processMetaNode(xmlTextReaderPtr reader);
00061 void processCreatorNode(xmlTextReaderPtr reader);
00062 void processDescriptionNode(xmlTextReaderPtr reader);
00063
00064 void processGraphNode(xmlTextReaderPtr reader);
00065 void processNodesNode(xmlTextReaderPtr reader);
00066 void processNodeNode(xmlTextReaderPtr reader);
00067 void processEdgesNode(xmlTextReaderPtr reader);
00068 void processEdgeNode(xmlTextReaderPtr reader);
00069
00070 void processAttributesNode(xmlTextReaderPtr reader);
00071 void processAttributeNode(xmlTextReaderPtr reader);
00072 void processAttributeDefaultNode(xmlTextReaderPtr reader);
00073 void processAttributeOptionsNode(xmlTextReaderPtr reader);
00074 void processAttvaluesNode(xmlTextReaderPtr reader);
00075 void processAttvalueNode(xmlTextReaderPtr reader);
00076
00077 bool isProcessableNode(xmlTextReaderPtr reader);
00078 private:
00079 enum ElemType { NODE, EDGE, ATTR_NODE, ATTR_EDGE };
00080 GEXF* _gexf;
00081 ElemType _last_node_type;
00082 libgexf::t_id _last_id;
00083 };
00084
00085 }
00086
00087 #endif
00088