[#BloombergLP-balxml-Utf8ReaderWrapper]
= xref:BloombergLP.adoc[BloombergLP]::xref:BloombergLP/balxml.adoc[balxml]::Utf8ReaderWrapper
:relfileprefix: ../../
:mrdocs:

Wrap a `Reader` and check that its input is valid UTF&hyphen;8&period;

== Synopsis

Declared in `&lt;balxml&lowbar;utf8readerwrapper&period;h&gt;`

[source,cpp,subs="verbatim,replacements,macros,-callouts"]
----
class Utf8ReaderWrapper
    : public xref:BloombergLP/balxml/Reader.adoc[Reader]
----

== Description

This class &quot;has a&quot; pointer to a held and wrapped `Reader` object, and operations on this object are passed to the held reader&period; The held reader is passed a `Utf8CheckingInStreamBufWrapper`, which holds and wraps a normal `streambuf`&period; The `Utf8CheckingInStreamBufWrapper` checks input for invalid UTF&hyphen;8, and if it detects any, makes the diagnosis of the problem available through the `errorInfo` accessor&period;

== Base Classes

[cols="1,4"]
|===
| Name| Description
| `xref:BloombergLP/balxml/Reader.adoc[Reader]`
| This abstract class defines an interface for fast, forward&hyphen;only access to XML data&period;
|===

== Type Aliases

[cols="1,4"]
|===
| Name| Description
| xref:BloombergLP/balxml/Reader/StreamBufPtr.adoc[`StreamBufPtr`] 
| Managed pointer to a `bsl&colon;&colon;streambuf` used for external entity input&period;
| xref:BloombergLP/balxml/Reader/XmlResolverFunctor.adoc[`XmlResolverFunctor`] 
| Type for a user&hyphen;supplied functor that opens an external XML resource&period;
|===


== Enums

[cols="1,4"]
|===
| Name| Description
| xref:BloombergLP/balxml/Reader/NodeType-02.adoc[`NodeType`] 
| Node types returned by `nodeType`, representing XML syntactic constructs within a document&period; Not every `Reader` implementation distinguishes all node types&period;
|===


== Member Functions

[cols="1,4"]
|===
| Name| Description
| xref:BloombergLP/balxml/Utf8ReaderWrapper/2constructor.adoc[`Utf8ReaderWrapper`]         [.small]#[constructor]#
| Create a `Utf8ReaderWrapper` that holds the specified `reader`&period;
| xref:BloombergLP/balxml/Utf8ReaderWrapper/2destructor.adoc[`&#126;Utf8ReaderWrapper`] [.small]#[destructor]# [.small]#[virtual]#
| Close the held reader and destroy this object&period;
| xref:BloombergLP/balxml/Utf8ReaderWrapper/advanceToNextNode.adoc[`advanceToNextNode`]  [.small]#[virtual]#
| Move to the next node in the data stream created by `open`&period;
| xref:BloombergLP/balxml/Utf8ReaderWrapper/allocator.adoc[`allocator`] 
| Return the allocator used by this object to allocate memory&period;
| xref:BloombergLP/balxml/Utf8ReaderWrapper/close.adoc[`close`]  [.small]#[virtual]#
| Close the reader&period;
| xref:BloombergLP/balxml/Utf8ReaderWrapper/documentEncoding.adoc[`documentEncoding`]  [.small]#[virtual]#
| Return the document encoding or NULL on error&period;
| xref:BloombergLP/balxml/Reader/dumpNode.adoc[`dumpNode`] 
| Print the information about the current node to the specified output `os` stream&period;
| xref:BloombergLP/balxml/Utf8ReaderWrapper/errorInfo.adoc[`errorInfo`]  [.small]#[virtual]#
| Return a reference to the non&hyphen;modifiable error information for this reader&period; The returned value becomes invalid when `close` is called or the reader is destroyed&period;
| xref:BloombergLP/balxml/Utf8ReaderWrapper/getColumnNumber.adoc[`getColumnNumber`]  [.small]#[virtual]#
| Return the current column number within the input stream&period;
| xref:BloombergLP/balxml/Utf8ReaderWrapper/getLineNumber.adoc[`getLineNumber`]  [.small]#[virtual]#
| Return the current line number within the input stream&period;
| xref:BloombergLP/balxml/Utf8ReaderWrapper/isEmptyElement.adoc[`isEmptyElement`]  [.small]#[virtual]#
| Return true if the current node is an empty element&period;
| xref:BloombergLP/balxml/Reader/isError.adoc[`isError`] 
| Return `true` if the derived object encountered a error&period; This method is equivalent to a call to `errorInfo()&period;isError()&semi;`
| xref:BloombergLP/balxml/Reader/isFatalError.adoc[`isFatalError`] 
| Return `true` if the derived object encountered a fatal error&period; This method is equivalent to a call to `errorInfo()&period;isFatalError()&semi;`
| xref:BloombergLP/balxml/Utf8ReaderWrapper/isOpen.adoc[`isOpen`]  [.small]#[virtual]#
| Return true if `open` was called successfully and `close` has not yet been called and false otherwise&period;
| xref:BloombergLP/balxml/Reader/isWarning.adoc[`isWarning`] 
| Return `true` if the derived object encountered a warning&period; This method is equivalent to a call to `errorInfo()&period;isWarning()&semi;`
| xref:BloombergLP/balxml/Utf8ReaderWrapper/lookupAttribute-05.adoc[`lookupAttribute`] 
| `lookupAttribute` overloads
| xref:BloombergLP/balxml/Utf8ReaderWrapper/nodeBaseUri.adoc[`nodeBaseUri`]  [.small]#[virtual]#
| Return the base URI of the current node&period;
| xref:BloombergLP/balxml/Utf8ReaderWrapper/nodeDepth.adoc[`nodeDepth`]  [.small]#[virtual]#
| Return the nesting depth of the current node in the XML document&period; The root node has depth 0&period;
| xref:BloombergLP/balxml/Utf8ReaderWrapper/nodeHasValue.adoc[`nodeHasValue`]  [.small]#[virtual]#
| Return true if the current node has a value and false otherwise&period;
| xref:BloombergLP/balxml/Utf8ReaderWrapper/nodeLocalName.adoc[`nodeLocalName`]  [.small]#[virtual]#
| Return the local name of the current node&period;
| xref:BloombergLP/balxml/Utf8ReaderWrapper/nodeName.adoc[`nodeName`]  [.small]#[virtual]#
| Return the qualified name of the current node&period;
| xref:BloombergLP/balxml/Utf8ReaderWrapper/nodeNamespaceId.adoc[`nodeNamespaceId`]  [.small]#[virtual]#
| Return the namespace ID of the current node if the current node has a namespace id and a negative number otherwise&period;
| xref:BloombergLP/balxml/Utf8ReaderWrapper/nodeNamespaceUri.adoc[`nodeNamespaceUri`]  [.small]#[virtual]#
| Return the namespace URI of the current node&period;
| xref:BloombergLP/balxml/Utf8ReaderWrapper/nodePrefix.adoc[`nodePrefix`]  [.small]#[virtual]#
| Return the prefix name of the current node&period;
| xref:BloombergLP/balxml/Utf8ReaderWrapper/nodeType.adoc[`nodeType`]  [.small]#[virtual]#
| Return the node type of the current node if the reader `isOpen` and has not encounter an error and `Reader&colon;&colon;NONE` otherwise&period;
| xref:BloombergLP/balxml/Utf8ReaderWrapper/nodeValue.adoc[`nodeValue`]  [.small]#[virtual]#
| Return the value of the current node&period;
| xref:BloombergLP/balxml/Utf8ReaderWrapper/numAttributes.adoc[`numAttributes`]  [.small]#[virtual]#
| Return the number of attributes for the current node if that node has attributes and 0 otherwise&period;
| xref:BloombergLP/balxml/Utf8ReaderWrapper/open-0f.adoc[`open`] 
| `open` overloads
| xref:BloombergLP/balxml/Utf8ReaderWrapper/options.adoc[`options`]  [.small]#[virtual]#
| Return the option flags&period;
| xref:BloombergLP/balxml/Utf8ReaderWrapper/prefixStack.adoc[`prefixStack`]  [.small]#[virtual]#
| Return a pointer to the modifiable prefix stack used by this reader&period;
| xref:BloombergLP/balxml/Utf8ReaderWrapper/resolver.adoc[`resolver`]  [.small]#[virtual]#
| Return the external XML resource resolver&period;
| xref:BloombergLP/balxml/Utf8ReaderWrapper/setOptions.adoc[`setOptions`]  [.small]#[virtual]#
| Set the options of the held reader to the flags in the specified `flags`&period;
| xref:BloombergLP/balxml/Utf8ReaderWrapper/setPrefixStack.adoc[`setPrefixStack`]  [.small]#[virtual]#
| Set the prefix stack to the stack at the specified `prefixes` address&period;
| xref:BloombergLP/balxml/Utf8ReaderWrapper/setResolver.adoc[`setResolver`]  [.small]#[virtual]#
| Set the external XML resource resolver to the specified `resolver`&period;
| xref:BloombergLP/balxml/Utf8ReaderWrapper/2conversion.adoc[`operator BloombergLP::bslmf::NestedTraitDeclaration&lt;Utf8ReaderWrapper, UsesBslmaAllocator&gt;`] 
| `Utf8ReaderWrapper` uses a `bslma` allocator&period;
|===


== Static Member Functions

[cols="1,4"]
|===
| Name| Description
| xref:BloombergLP/balxml/Reader/nodeTypeAsString.adoc[`nodeTypeAsString`] 
| Return a string representation for the specified `nodeType` code or &quot;(&ast; UNKNOWN NODE TYPE &ast;)&quot; if nodeType is not one of the values enumerated in `NodeType`&period;
|===



[.small]#Created with https://www.mrdocs.com[MrDocs]#
