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 /****************************************************************************/
SUMOSAXReader::myIStream
std::unique_ptr< std::istream > myIStream
Definition: SUMOSAXReader.h:120
SUMOSAXReader::setValidation
void setValidation(const XERCES_CPP_NAMESPACE::SAX2XMLReader::ValSchemes validationScheme)
Definition: SUMOSAXReader.cpp:74
SUMOSAXReader
SAX-reader encapsulation containing binary reader.
Definition: SUMOSAXReader.h:56
SUMOSAXReader::parseNext
bool parseNext()
Definition: SUMOSAXReader.cpp:173
SUMOSAXReader::setHandler
void setHandler(GenericSAXHandler &handler)
Sets the given handler as content and error handler for the reader.
Definition: SUMOSAXReader.cpp:63
SUMOSAXReader::myBinaryInput
BinaryInputDevice * myBinaryInput
Definition: SUMOSAXReader.h:118
SUMOSAXReader::~SUMOSAXReader
~SUMOSAXReader()
Destructor.
Definition: SUMOSAXReader.cpp:56
SUMOSAXReader::operator=
const SUMOSAXReader & operator=(const SUMOSAXReader &s)
invalidated assignment operator
SUMOSAXReader::myValidationScheme
XERCES_CPP_NAMESPACE::SAX2XMLReader::ValSchemes myValidationScheme
Information whether built reader/parser shall validate XML-documents against schemata.
Definition: SUMOSAXReader.h:112
SUMOSAXReader::getSAXReader
XERCES_CPP_NAMESPACE::SAX2XMLReader * getSAXReader()
Builds a reader.
Definition: SUMOSAXReader.cpp:219
SUMOSAXReader::LocalSchemaResolver::setHandler
void setHandler(GenericSAXHandler &handler)
Definition: SUMOSAXReader.cpp:265
IStreamInputSource
Xerces InputSource reading from arbitrary std::istream.
Definition: IStreamInputSource.h:61
SUMOSAXReader::parseFirst
bool parseFirst(std::string systemID)
Definition: SUMOSAXReader.cpp:125
SUMOSAXReader::myToken
XERCES_CPP_NAMESPACE::XMLPScanToken myToken
Definition: SUMOSAXReader.h:114
SUMOSAXReader::parse
void parse(std::string systemID)
Definition: SUMOSAXReader.cpp:92
SUMOSAXReader::parseString
void parseString(std::string content)
Definition: SUMOSAXReader.cpp:115
SUMOSAXReader::myInputStream
std::unique_ptr< IStreamInputSource > myInputStream
Definition: SUMOSAXReader.h:122
SUMOSAXReader::LocalSchemaResolver
Definition: SUMOSAXReader.h:86
SUMOSAXReader::mySbxVersion
char mySbxVersion
Definition: SUMOSAXReader.h:124
SUMOSAXReader::myHandler
GenericSAXHandler * myHandler
Definition: SUMOSAXReader.h:109
SUMOSAXReader::LocalSchemaResolver::myHandler
GenericSAXHandler * myHandler
Definition: SUMOSAXReader.h:91
SUMOSAXReader::SUMOSAXReader
SUMOSAXReader(GenericSAXHandler &handler, const XERCES_CPP_NAMESPACE::SAX2XMLReader::ValSchemes validationScheme)
Constructor.
Definition: SUMOSAXReader.cpp:50
config.h
SUMOSAXReader::myXMLReader
XERCES_CPP_NAMESPACE::SAX2XMLReader * myXMLReader
Definition: SUMOSAXReader.h:116
SUMOSAXReader::myXMLStack
std::vector< SumoXMLTag > myXMLStack
The stack of begun xml elements.
Definition: SUMOSAXReader.h:127
GenericSAXHandler
A handler which converts occuring elements and attributes into enums.
Definition: GenericSAXHandler.h:68
SUMOSAXReader::LocalSchemaResolver::resolveEntity
XERCES_CPP_NAMESPACE::InputSource * resolveEntity(const XMLCh *const publicId, const XMLCh *const systemId)
Definition: SUMOSAXReader.cpp:240
SUMOXMLDefinitions.h
BinaryInputDevice
Encapsulates binary reading operations on a file.
Definition: BinaryInputDevice.h:58
SUMOSAXReader::mySchemaResolver
LocalSchemaResolver mySchemaResolver
Definition: SUMOSAXReader.h:129