3 #ifndef INCLUDE_NN_NLIB_EXI_XMLSTREAMREADER_H_ 4 #define INCLUDE_NN_NLIB_EXI_XMLSTREAMREADER_H_ 9 #if defined(_MSC_VER) && defined(nx_exi_EXPORTS) 10 #undef NLIB_VIS_PUBLIC 11 #define NLIB_VIS_PUBLIC NLIB_WINEXPORT 34 isVersionIgnored(false),
36 tempStringMaxLength(1023) {}
40 class ExiStringAllocator;
49 PROCESSING_INSTRUCTION = 3,
68 return Create(stream, settings, al);
72 return Create(stream, settings);
76 return Create(stream, settings, al);
81 if (is_local_al_) ExiAllocator::Swap(al_);
84 ExiAllocatorSwapper swapper(al_);
88 ExiAllocatorSwapper swapper(al_);
89 return this->GetAttributeCountV();
92 ExiAllocatorSwapper swapper(al_);
93 return this->GetAttributeLocalNameV(index);
96 ExiAllocatorSwapper swapper(al_);
97 return this->GetAttributeNamespaceUriV(index);
100 ExiAllocatorSwapper swapper(al_);
101 return this->GetAttributePrefixV(index);
103 const ExiChar* GetAttributeType(
size_t index) NLIB_NOEXCEPT {
104 ExiAllocatorSwapper swapper(al_);
105 return this->GetAttributeTypeV(index);
108 ExiAllocatorSwapper swapper(al_);
109 return this->GetAttributeValueV(index);
112 const ExiChar* local_name) NLIB_NOEXCEPT {
113 ExiAllocatorSwapper swapper(al_);
114 return this->GetAttributeValueV(namespace_uri, local_name);
117 ExiAllocatorSwapper swapper(al_);
118 return this->GetNamespaceCountV();
121 ExiAllocatorSwapper swapper(al_);
122 return this->GetNamespacePrefixV(index);
125 ExiAllocatorSwapper swapper(al_);
126 return this->GetNamespaceUriV(index);
129 ExiAllocatorSwapper swapper(al_);
130 return this->GetElementTextV();
133 ExiAllocatorSwapper swapper(al_);
134 return this->GetLocalNameV();
137 ExiAllocatorSwapper swapper(al_);
138 return this->GetNamespaceUriV();
141 ExiAllocatorSwapper swapper(al_);
142 return this->GetPrefixV();
145 ExiAllocatorSwapper swapper(al_);
146 return this->GetTextV();
148 int GetLineNo() const NLIB_NOEXCEPT {
return this->GetLineNoV(); }
149 int GetColumnNo() const NLIB_NOEXCEPT {
return this->GetColumnNoV(); }
151 ExiAllocatorSwapper swapper(al_);
152 return this->NextV();
158 return state_ == START_ELEMENT || state_ == END_ELEMENT ||
159 state_ == PROCESSING_INSTRUCTION;
161 bool HasNext() const NLIB_NOEXCEPT {
return state_ != END_DOCUMENT && state_ != NONE; }
163 return state_ == CHARACTERS || state_ == CDATA || state_ == COMMENT ||
164 state_ == PROCESSING_INSTRUCTION;
166 bool IsCharacters() const NLIB_NOEXCEPT {
return state_ == CHARACTERS || state_ == CDATA; }
167 bool IsEndElement() const NLIB_NOEXCEPT {
return state_ == END_ELEMENT; }
179 state_(START_DOCUMENT) {}
181 void SetExiErrorStatus(
ExiErrorStatus* p) NLIB_NOEXCEPT { error_status_ = p; }
182 ExiErrorStatus* GetExiErrorStatus()
const NLIB_NOEXCEPT {
return error_status_; }
185 template <
class DECODER>
187 template <
class DECODER>
189 template <
class DECODER>
191 template <
class DECODER>
193 template <
class DECODER>
195 template <
class DECODER>
196 const ExiChar* GetAttributeValue_(DECODER* decoder,
const ExiChar* namespace_uri,
198 template <
class DECODER>
200 template <
class DECODER>
202 template <
class DECODER>
205 template <
class DECODER>
207 template <
class DECODER>
209 template <
class DECODER>
211 template <
class DECODER>
216 virtual void CloseV() NLIB_NOEXCEPT = 0;
217 virtual size_t GetAttributeCountV() NLIB_NOEXCEPT = 0;
218 virtual const ExiChar* GetAttributeLocalNameV(
size_t index) NLIB_NOEXCEPT = 0;
219 virtual const ExiChar* GetAttributeNamespaceUriV(
size_t index) NLIB_NOEXCEPT = 0;
220 virtual const ExiChar* GetAttributePrefixV(
size_t index) NLIB_NOEXCEPT = 0;
221 virtual const ExiChar* GetAttributeTypeV(
size_t index) NLIB_NOEXCEPT = 0;
222 virtual const ExiChar* GetAttributeValueV(
size_t index) NLIB_NOEXCEPT = 0;
223 virtual const ExiChar* GetAttributeValueV(
const ExiChar* namespace_uri,
224 const ExiChar* local_name) NLIB_NOEXCEPT = 0;
225 virtual size_t GetNamespaceCountV() NLIB_NOEXCEPT = 0;
226 virtual const ExiChar* GetNamespacePrefixV(
size_t index) NLIB_NOEXCEPT = 0;
227 virtual const ExiChar* GetNamespaceUriV(
size_t index) NLIB_NOEXCEPT = 0;
228 virtual const ExiChar* GetElementTextV() NLIB_NOEXCEPT = 0;
229 virtual const ExiChar* GetLocalNameV() NLIB_NOEXCEPT = 0;
230 virtual const ExiChar* GetNamespaceUriV() NLIB_NOEXCEPT = 0;
231 virtual const ExiChar* GetPrefixV() NLIB_NOEXCEPT = 0;
232 virtual const ExiChar* GetTextV() NLIB_NOEXCEPT = 0;
233 virtual int GetLineNoV()
const NLIB_NOEXCEPT {
return 0; }
234 virtual int GetColumnNoV()
const NLIB_NOEXCEPT {
return 0; }
250 #if defined(_MSC_VER) && defined(nx_exi_EXPORTS) 251 #undef NLIB_VIS_PUBLIC 252 #define NLIB_VIS_PUBLIC NLIB_WINIMPORT 255 #endif // INCLUDE_NN_NLIB_EXI_XMLSTREAMREADER_H_ XmlStreamConstants Next() noexcept
Reads the next XML stream event from the stream.
static XmlStreamReader * Create(InputStream *stream, const ExiAllocatorEx &al) noexcept
Creates an XmlStreamReader instance by specifying an objectwise allocator.
size_t GetAttributeCount() noexcept
Gets the number of attributes.
Defines constructs such as string-type typedef statements and utility macros.
static XmlStreamReader * Create(InputStream *stream, const XmlStreamReaderSettings &settings) noexcept
Creates an instance of XmlStreamReader.
#define NLIB_DISALLOW_COPY_AND_ASSIGN(TypeName)
Prohibits use of the copy constructor and assignment operator for the class specified by TypeName...
const ExiChar * GetNamespacePrefix(size_t index) noexcept
Gets the prefix of a namespace declaration.
const ExiChar * GetLocalName() noexcept
Gets the local name.
#define NLIB_SAFE_BOOL(class_name, exp)
Defines a safe operator bool function in the class. Uses the C++11 explicit bool if it is available f...
const ExiChar * GetAttributePrefix(size_t index) noexcept
Gets the prefix of an attribute.
Set of options that preserve the binary XML to read or write.
const ExiChar * GetAttributeValue(const ExiChar *namespace_uri, const ExiChar *local_name) noexcept
Gets the value of the attribute based on a particular namespace URI and local name.
const ExiChar * GetAttributeLocalName(size_t index) noexcept
Gets the local name of an attribute.
const ExiChar * GetNamespaceUri(size_t index) noexcept
Gets the namespace URI of a namespace declaration.
const ExiChar * GetPrefix() noexcept
Gets the namespace prefix of the XML.
const ExiChar * GetAttributeValue(size_t index) noexcept
Gets the value of an attribute.
constexpr XmlStreamReaderSettings() noexcept
Configures the default settings.
static XmlStreamReader * Create(InputStream *stream) noexcept
Creates an XmlStreamReader instance using default settings for XmlStreamReaderSettings.
virtual ~XmlStreamReader() noexcept
Destructor.
const ExiChar * GetText() noexcept
Gets text data.
Sets and stores the error status of the XML parser.
const ExiChar * GetElementText() noexcept
Reads a series of text events and returns a single text element.
int GetColumnNo() const noexcept
Gets the column number indicated by the XmlStreamReader.
Preserve preserve
Sets the fidelity options.
const ExiChar * GetNamespaceUri() noexcept
Gets the URI of the XML namespace.
Abstract class that reads from an XML stream.
ExiErrorStatus::ErrorValue GetError() const noexcept
Gets the error value.
ExiErrorStatus * GetErrorStatus() const noexcept
Gets an error status object.
int GetLineNo() const noexcept
Gets the line number indicated by the XmlStreamReader.
Alignment
Specifies the alignment of the binary XML to read or write.
const ExiChar * GetAttributeNamespaceUri(size_t index) noexcept
Gets the namespace URI of an attribute.
Allocator that can be set for each instance of XmlStreamReader and XmlStreamWriter.
size_t GetNamespaceCount() noexcept
Gets the number of newly defined namespaces.
XmlProcessor
Option that specifies which XML processor to use.
size_t tempStringMaxLength
Specifies the length of the string that stores the temporary buffer used when reading XML comments an...
ErrorValue
Enumerates error statuses.
XmlProcessor processor
Specifies whether to read binary XML or text-based XML.
#define NLIB_NOEXCEPT
Defines noexcept geared to the environment, or the equivalent.
#define NLIB_CEXPR
Defines constexpr if it is available for use. If not, holds an empty string.
Alignment alignment
Specifies the alignment of the binary XML to read.
bool IsStartElement() const noexcept
Gets whether the data that was read is an opening tag.
XmlStreamConstants GetEventType() const noexcept
Returns the value for the most recent XML stream event.
Defines the errors returned by the XML parser.
bool HasName() const noexcept
Returns whether data like a local name can be obtained.
bool isVersionIgnored
By setting this option to true during read operations, you can ignore the version check when reading ...
bool IsCharacters() const noexcept
Gets whether the data that was read is a text node.
XmlStreamConstants
Values of XML stream events that occurred while reading an XML stream.
bool IsEndElement() const noexcept
Gets whether the data that was read is a closing tag.
void Close() noexcept
Closes an XmlStreamReader. The original stream is not actually closed; it merely stops being referenc...
bool fragment
Reads binary XML that supports multiple root nodes (aka XML fragments).
bool HasNext() const noexcept
Returns whether the next XML stream event can be obtained.
Reads from and writes to a bit-packed EXI stream (default).
bool HasText() const noexcept
Returns whether text is ready to be obtained using GetText().
wchar_t ExiChar
A string-type typedef used internally by the XML parser.
Structure used as the initialization options for XmlStreamReader.