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 /****************************************************************************/
16 // SAX-reader encapsulation containing binary reader
17 /****************************************************************************/
18 #ifndef SUMOSAXReader_h
19 #define SUMOSAXReader_h
20 
21 
22 // ===========================================================================
23 // included modules
24 // ===========================================================================
25 #include <config.h>
26 
27 #include <string>
28 #include <memory>
29 #include <vector>
30 #include <xercesc/sax2/SAX2XMLReader.hpp>
31 #include <xercesc/sax/EntityResolver.hpp>
32 #include <xercesc/sax/InputSource.hpp>
33 #include "SUMOXMLDefinitions.h"
34 
35 
36 // ===========================================================================
37 // class declarations
38 // ===========================================================================
39 class GenericSAXHandler;
40 class BinaryInputDevice;
41 class IStreamInputSource;
42 
43 
44 // ===========================================================================
45 // class definitions
46 // ===========================================================================
56 public:
62  SUMOSAXReader(GenericSAXHandler& handler, const XERCES_CPP_NAMESPACE::SAX2XMLReader::ValSchemes validationScheme);
63 
66 
72  void setHandler(GenericSAXHandler& handler);
73 
74  void setValidation(const XERCES_CPP_NAMESPACE::SAX2XMLReader::ValSchemes validationScheme);
75 
76  void parse(std::string systemID);
77 
78  void parseString(std::string content);
79 
80  bool parseFirst(std::string systemID);
81 
82  bool parseNext();
83 
84 private:
85  class LocalSchemaResolver : public XERCES_CPP_NAMESPACE::EntityResolver {
86  public:
87  XERCES_CPP_NAMESPACE::InputSource* resolveEntity(const XMLCh* const publicId, const XMLCh* const systemId);
88  void setHandler(GenericSAXHandler& handler);
89  private:
91  };
92 
93 private:
104  XERCES_CPP_NAMESPACE::SAX2XMLReader* getSAXReader();
105 
106 
107 private:
109 
111  XERCES_CPP_NAMESPACE::SAX2XMLReader::ValSchemes myValidationScheme;
112 
113  XERCES_CPP_NAMESPACE::XMLPScanToken myToken;
114 
115  XERCES_CPP_NAMESPACE::SAX2XMLReader* myXMLReader;
116 
118 
119  std::unique_ptr<std::istream> myIStream;
120 
121  std::unique_ptr<IStreamInputSource> myInputStream;
122 
124 
126  std::vector<SumoXMLTag> myXMLStack;
127 
129 
130 private:
133 
136 
137 };
138 
139 
140 #endif
141 
142 /****************************************************************************/
SUMOSAXReader::myIStream
std::unique_ptr< std::istream > myIStream
Definition: SUMOSAXReader.h:119
SUMOSAXReader::setValidation
void setValidation(const XERCES_CPP_NAMESPACE::SAX2XMLReader::ValSchemes validationScheme)
Definition: SUMOSAXReader.cpp:73
SUMOSAXReader
SAX-reader encapsulation containing binary reader.
Definition: SUMOSAXReader.h:55
SUMOSAXReader::parseNext
bool parseNext()
Definition: SUMOSAXReader.cpp:175
SUMOSAXReader::setHandler
void setHandler(GenericSAXHandler &handler)
Sets the given handler as content and error handler for the reader.
Definition: SUMOSAXReader.cpp:62
SUMOSAXReader::myBinaryInput
BinaryInputDevice * myBinaryInput
Definition: SUMOSAXReader.h:117
SUMOSAXReader::~SUMOSAXReader
~SUMOSAXReader()
Destructor.
Definition: SUMOSAXReader.cpp:55
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:111
SUMOSAXReader::getSAXReader
XERCES_CPP_NAMESPACE::SAX2XMLReader * getSAXReader()
Builds a reader.
Definition: SUMOSAXReader.cpp:221
SUMOSAXReader::LocalSchemaResolver::setHandler
void setHandler(GenericSAXHandler &handler)
Definition: SUMOSAXReader.cpp:267
IStreamInputSource
Xerces InputSource reading from arbitrary std::istream.
Definition: IStreamInputSource.h:60
SUMOSAXReader::parseFirst
bool parseFirst(std::string systemID)
Definition: SUMOSAXReader.cpp:127
SUMOSAXReader::myToken
XERCES_CPP_NAMESPACE::XMLPScanToken myToken
Definition: SUMOSAXReader.h:113
SUMOSAXReader::parse
void parse(std::string systemID)
Definition: SUMOSAXReader.cpp:91
SUMOSAXReader::parseString
void parseString(std::string content)
Definition: SUMOSAXReader.cpp:117
SUMOSAXReader::myInputStream
std::unique_ptr< IStreamInputSource > myInputStream
Definition: SUMOSAXReader.h:121
SUMOSAXReader::LocalSchemaResolver
Definition: SUMOSAXReader.h:85
SUMOSAXReader::mySbxVersion
char mySbxVersion
Definition: SUMOSAXReader.h:123
SUMOSAXReader::myHandler
GenericSAXHandler * myHandler
Definition: SUMOSAXReader.h:108
SUMOSAXReader::LocalSchemaResolver::myHandler
GenericSAXHandler * myHandler
Definition: SUMOSAXReader.h:90
SUMOSAXReader::SUMOSAXReader
SUMOSAXReader(const SUMOSAXReader &s)
invalidated copy constructor
SUMOSAXReader::SUMOSAXReader
SUMOSAXReader(GenericSAXHandler &handler, const XERCES_CPP_NAMESPACE::SAX2XMLReader::ValSchemes validationScheme)
Constructor.
Definition: SUMOSAXReader.cpp:49
config.h
SUMOSAXReader::myXMLReader
XERCES_CPP_NAMESPACE::SAX2XMLReader * myXMLReader
Definition: SUMOSAXReader.h:115
SUMOSAXReader::myXMLStack
std::vector< SumoXMLTag > myXMLStack
The stack of begun xml elements.
Definition: SUMOSAXReader.h:126
GenericSAXHandler
A handler which converts occuring elements and attributes into enums.
Definition: GenericSAXHandler.h:67
SUMOSAXReader::LocalSchemaResolver::resolveEntity
XERCES_CPP_NAMESPACE::InputSource * resolveEntity(const XMLCh *const publicId, const XMLCh *const systemId)
Definition: SUMOSAXReader.cpp:242
SUMOXMLDefinitions.h
BinaryInputDevice
Encapsulates binary reading operations on a file.
Definition: BinaryInputDevice.h:57
SUMOSAXReader::mySchemaResolver
LocalSchemaResolver mySchemaResolver
Definition: SUMOSAXReader.h:128