Eclipse SUMO - Simulation of Urban MObility
SUMOSAXReader.h
Go to the documentation of this file.
1 /****************************************************************************/
2 // Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.org/sumo
3 // Copyright (C) 2012-2019 German Aerospace Center (DLR) and others.
4 // This program and the accompanying materials
5 // are made available under the terms of the Eclipse Public License v2.0
6 // which accompanies this distribution, and is available at
7 // http://www.eclipse.org/legal/epl-v20.html
8 // SPDX-License-Identifier: EPL-2.0
9 /****************************************************************************/
17 // SAX-reader encapsulation containing binary reader
18 /****************************************************************************/
19 #ifndef SUMOSAXReader_h
20 #define SUMOSAXReader_h
21 
22 
23 // ===========================================================================
24 // included modules
25 // ===========================================================================
26 #include <config.h>
27 
28 #include <string>
29 #include <memory>
30 #include <vector>
31 #include <xercesc/sax2/SAX2XMLReader.hpp>
32 #include <xercesc/sax/EntityResolver.hpp>
33 #include <xercesc/sax/InputSource.hpp>
34 #include "SUMOXMLDefinitions.h"
35 
36 
37 // ===========================================================================
38 // class declarations
39 // ===========================================================================
40 class GenericSAXHandler;
41 class BinaryInputDevice;
42 class IStreamInputSource;
43 
44 
45 // ===========================================================================
46 // class definitions
47 // ===========================================================================
57 public:
63  SUMOSAXReader(GenericSAXHandler& handler, const XERCES_CPP_NAMESPACE::SAX2XMLReader::ValSchemes validationScheme);
64 
67 
73  void setHandler(GenericSAXHandler& handler);
74 
75  void setValidation(const XERCES_CPP_NAMESPACE::SAX2XMLReader::ValSchemes validationScheme);
76 
77  void parse(std::string systemID);
78 
79  void parseString(std::string content);
80 
81  bool parseFirst(std::string systemID);
82 
83  bool parseNext();
84 
85 private:
86  class LocalSchemaResolver : public XERCES_CPP_NAMESPACE::EntityResolver {
87  public:
88  XERCES_CPP_NAMESPACE::InputSource* resolveEntity(const XMLCh* const publicId, const XMLCh* const systemId);
89  void setHandler(GenericSAXHandler& handler);
90  private:
92  };
93 
94 private:
105  XERCES_CPP_NAMESPACE::SAX2XMLReader* getSAXReader();
106 
107 
108 private:
110 
112  XERCES_CPP_NAMESPACE::SAX2XMLReader::ValSchemes myValidationScheme;
113 
114  XERCES_CPP_NAMESPACE::XMLPScanToken myToken;
115 
116  XERCES_CPP_NAMESPACE::SAX2XMLReader* myXMLReader;
117 
119 
120  std::unique_ptr<std::istream> myIStream;
121 
122  std::unique_ptr<IStreamInputSource> myInputStream;
123 
125 
127  std::vector<SumoXMLTag> myXMLStack;
128 
130 
131 private:
133  SUMOSAXReader(const SUMOSAXReader& s);
134 
136  const SUMOSAXReader& operator=(const SUMOSAXReader& s);
137 
138 };
139 
140 
141 #endif
142 
143 /****************************************************************************/
std::vector< SumoXMLTag > myXMLStack
The stack of begun xml elements.
const SUMOSAXReader & operator=(const SUMOSAXReader &s)
invalidated assignment operator
SUMOSAXReader(GenericSAXHandler &handler, const XERCES_CPP_NAMESPACE::SAX2XMLReader::ValSchemes validationScheme)
Constructor.
XERCES_CPP_NAMESPACE::SAX2XMLReader * getSAXReader()
Builds a reader.
SAX-reader encapsulation containing binary reader.
Definition: SUMOSAXReader.h:56
void setValidation(const XERCES_CPP_NAMESPACE::SAX2XMLReader::ValSchemes validationScheme)
XERCES_CPP_NAMESPACE::XMLPScanToken myToken
void parseString(std::string content)
BinaryInputDevice * myBinaryInput
Xerces InputSource reading from arbitrary std::istream.
A handler which converts occuring elements and attributes into enums.
void parse(std::string systemID)
std::unique_ptr< IStreamInputSource > myInputStream
void setHandler(GenericSAXHandler &handler)
XERCES_CPP_NAMESPACE::SAX2XMLReader::ValSchemes myValidationScheme
Information whether built reader/parser shall validate XML-documents against schemata.
bool parseFirst(std::string systemID)
XERCES_CPP_NAMESPACE::SAX2XMLReader * myXMLReader
void setHandler(GenericSAXHandler &handler)
Sets the given handler as content and error handler for the reader.
LocalSchemaResolver mySchemaResolver
XERCES_CPP_NAMESPACE::InputSource * resolveEntity(const XMLCh *const publicId, const XMLCh *const systemId)
~SUMOSAXReader()
Destructor.
Encapsulates binary reading operations on a file.
GenericSAXHandler * myHandler
std::unique_ptr< std::istream > myIStream