16 #ifndef INCLUDE_NN_NLIB_EXI_XMLSTREAMREADER_H_ 17 #define INCLUDE_NN_NLIB_EXI_XMLSTREAMREADER_H_ 22 #if defined(_MSC_VER) && defined(nx_exi_EXPORTS) 23 #undef NLIB_VIS_PUBLIC 24 #define NLIB_VIS_PUBLIC NLIB_WINEXPORT 47 isVersionIgnored(false),
49 tempStringMaxLength(1023) {}
53 class ExiStringAllocator;
62 PROCESSING_INSTRUCTION = 3,
81 return Create(stream, settings, al);
85 return Create(stream, settings);
89 return Create(stream, settings, al);
94 if (is_local_al_) ExiAllocator::Swap(al_);
97 ExiAllocatorSwapper swapper(al_);
101 ExiAllocatorSwapper swapper(al_);
102 return this->GetAttributeCountV();
105 ExiAllocatorSwapper swapper(al_);
106 return this->GetAttributeLocalNameV(index);
109 ExiAllocatorSwapper swapper(al_);
110 return this->GetAttributeNamespaceUriV(index);
113 ExiAllocatorSwapper swapper(al_);
114 return this->GetAttributePrefixV(index);
116 const ExiChar* GetAttributeType(
size_t index) NLIB_NOEXCEPT {
117 ExiAllocatorSwapper swapper(al_);
118 return this->GetAttributeTypeV(index);
121 ExiAllocatorSwapper swapper(al_);
122 return this->GetAttributeValueV(index);
125 const ExiChar* local_name) NLIB_NOEXCEPT {
126 ExiAllocatorSwapper swapper(al_);
127 return this->GetAttributeValueV(namespace_uri, local_name);
130 ExiAllocatorSwapper swapper(al_);
131 return this->GetNamespaceCountV();
134 ExiAllocatorSwapper swapper(al_);
135 return this->GetNamespacePrefixV(index);
138 ExiAllocatorSwapper swapper(al_);
139 return this->GetNamespaceUriV(index);
142 ExiAllocatorSwapper swapper(al_);
143 return this->GetElementTextV();
146 ExiAllocatorSwapper swapper(al_);
147 return this->GetLocalNameV();
150 ExiAllocatorSwapper swapper(al_);
151 return this->GetNamespaceUriV();
154 ExiAllocatorSwapper swapper(al_);
155 return this->GetPrefixV();
158 ExiAllocatorSwapper swapper(al_);
159 return this->GetTextV();
161 int GetLineNo() const NLIB_NOEXCEPT {
return this->GetLineNoV(); }
162 int GetColumnNo() const NLIB_NOEXCEPT {
return this->GetColumnNoV(); }
164 ExiAllocatorSwapper swapper(al_);
165 return this->NextV();
171 return state_ == START_ELEMENT || state_ == END_ELEMENT ||
172 state_ == PROCESSING_INSTRUCTION;
174 bool HasNext() const NLIB_NOEXCEPT {
return state_ != END_DOCUMENT && state_ != NONE; }
176 return state_ == CHARACTERS || state_ == CDATA || state_ == COMMENT ||
177 state_ == PROCESSING_INSTRUCTION;
179 bool IsCharacters() const NLIB_NOEXCEPT {
return state_ == CHARACTERS || state_ == CDATA; }
180 bool IsEndElement() const NLIB_NOEXCEPT {
return state_ == END_ELEMENT; }
192 state_(START_DOCUMENT) {}
194 void SetExiErrorStatus(
ExiErrorStatus* p) NLIB_NOEXCEPT { error_status_ = p; }
195 ExiErrorStatus* GetExiErrorStatus()
const NLIB_NOEXCEPT {
return error_status_; }
198 template <
class DECODER>
200 template <
class DECODER>
202 template <
class DECODER>
204 template <
class DECODER>
206 template <
class DECODER>
208 template <
class DECODER>
209 const ExiChar* GetAttributeValue_(DECODER* decoder,
const ExiChar* namespace_uri,
211 template <
class DECODER>
213 template <
class DECODER>
215 template <
class DECODER>
218 template <
class DECODER>
220 template <
class DECODER>
222 template <
class DECODER>
224 template <
class DECODER>
229 virtual void CloseV() NLIB_NOEXCEPT = 0;
230 virtual size_t GetAttributeCountV() NLIB_NOEXCEPT = 0;
231 virtual const ExiChar* GetAttributeLocalNameV(
size_t index) NLIB_NOEXCEPT = 0;
232 virtual const ExiChar* GetAttributeNamespaceUriV(
size_t index) NLIB_NOEXCEPT = 0;
233 virtual const ExiChar* GetAttributePrefixV(
size_t index) NLIB_NOEXCEPT = 0;
234 virtual const ExiChar* GetAttributeTypeV(
size_t index) NLIB_NOEXCEPT = 0;
235 virtual const ExiChar* GetAttributeValueV(
size_t index) NLIB_NOEXCEPT = 0;
236 virtual const ExiChar* GetAttributeValueV(
const ExiChar* namespace_uri,
237 const ExiChar* local_name) NLIB_NOEXCEPT = 0;
238 virtual size_t GetNamespaceCountV() NLIB_NOEXCEPT = 0;
239 virtual const ExiChar* GetNamespacePrefixV(
size_t index) NLIB_NOEXCEPT = 0;
240 virtual const ExiChar* GetNamespaceUriV(
size_t index) NLIB_NOEXCEPT = 0;
241 virtual const ExiChar* GetElementTextV() NLIB_NOEXCEPT = 0;
242 virtual const ExiChar* GetLocalNameV() NLIB_NOEXCEPT = 0;
243 virtual const ExiChar* GetNamespaceUriV() NLIB_NOEXCEPT = 0;
244 virtual const ExiChar* GetPrefixV() NLIB_NOEXCEPT = 0;
245 virtual const ExiChar* GetTextV() NLIB_NOEXCEPT = 0;
246 virtual int GetLineNoV()
const NLIB_NOEXCEPT {
return 0; }
247 virtual int GetColumnNoV()
const NLIB_NOEXCEPT {
return 0; }
263 #if defined(_MSC_VER) && defined(nx_exi_EXPORTS) 264 #undef NLIB_VIS_PUBLIC 265 #define NLIB_VIS_PUBLIC NLIB_WINIMPORT 268 #endif // INCLUDE_NN_NLIB_EXI_XMLSTREAMREADER_H_ XmlStreamConstants Next() noexcept
ストリームから次のXMLストリームイベントを読み込みます。
static XmlStreamReader * Create(InputStream *stream, const ExiAllocatorEx &al) noexcept
オブジェクト単位のアロケータを指定してXmlStreamReaderのインスタンスを作成します。 ...
size_t GetAttributeCount() noexcept
属性の数を取得します。
文字列型のtypedefやユーティリティマクロ等が定義されています。
static XmlStreamReader * Create(InputStream *stream, const XmlStreamReaderSettings &settings) noexcept
XmlStreamReaderのインスタンスを作成します。
#define NLIB_DISALLOW_COPY_AND_ASSIGN(TypeName)
TypeName で指定されたクラスのコピーコンストラクタと代入演算子を禁止します。
const ExiChar * GetNamespacePrefix(size_t index) noexcept
名前空間宣言のプレフィックスを取得します。
const ExiChar * GetLocalName() noexcept
ローカル名を取得します。
#define NLIB_SAFE_BOOL(class_name, exp)
クラス内に安全なoperator bool()を定義します。 可能であればC++11のexplicit boolを利用します。 ...
const ExiChar * GetAttributePrefix(size_t index) noexcept
属性のプレフィックスを取得します。
読み書きするバイナリXMLのデータ保持オプションです。
const ExiChar * GetAttributeValue(const ExiChar *namespace_uri, const ExiChar *local_name) noexcept
名前空間URIとローカル名を指定して属性の値を取得します。
const ExiChar * GetAttributeLocalName(size_t index) noexcept
属性のローカル名を取得します。
const ExiChar * GetNamespaceUri(size_t index) noexcept
名前空間宣言の名前空間URIを取得します。
const ExiChar * GetPrefix() noexcept
XMLの名前空間プレフィックスを取得します。
const ExiChar * GetAttributeValue(size_t index) noexcept
属性の値を取得します。
constexpr XmlStreamReaderSettings() noexcept
デフォルト設定がセットされます。
static XmlStreamReader * Create(InputStream *stream) noexcept
XmlStreamReaderSettingsをデフォルト設定でXmlStreamReaderのインスタンスを作成します。 ...
virtual ~XmlStreamReader() noexcept
デストラクタです。
const ExiChar * GetText() noexcept
テキストデータを取得します。
const ExiChar * GetElementText() noexcept
連続したテキストイベントを読み込んで1つのテキストを返します。
int GetColumnNo() const noexcept
XmlStreamReader が指し示しているカラム番号を取得します。
Preserve preserve
各種フィデリティオプションを設定します。
const ExiChar * GetNamespaceUri() noexcept
XML名前空間のURIを取得します。
XMLストリームからの読み出しを行う抽象クラスです。
ExiErrorStatus::ErrorValue GetError() const noexcept
エラー値を取得します。
ExiErrorStatus * GetErrorStatus() const noexcept
エラー状態オブジェクトを取得します。
int GetLineNo() const noexcept
XmlStreamReader が指し示している行番号を取得します。
Alignment
読み書きするバイナリXMLのアライメントを指定します。
const ExiChar * GetAttributeNamespaceUri(size_t index) noexcept
属性の名前空間URIを取得します。
XmlStreamReader, XmlStreamWriter の各インスタンス毎に設定できるアロケータです。
size_t GetNamespaceCount() noexcept
新たに宣言された名前空間の数を取得します。
XmlProcessor
利用するXmlプロセッサの指定オプションです。
size_t tempStringMaxLength
XMLコメントとProcessingInstructionの読み込みに用いるテンポラリバッファが格納できる文字列長を指定しま...
XmlProcessor processor
バイナリXMLを読み込むかテキストXMLを読み込むか指定します。
#define NLIB_NOEXCEPT
環境に合わせてnoexcept 又は同等の定義がされます。
#define NLIB_CEXPR
利用可能であればconstexprが定義されます。そうでない場合は空文字列です。
Alignment alignment
読み込むバイナリXMLのアライメントを指定します。
bool IsStartElement() const noexcept
読み込んだデータが開始タグかどうかを取得します。
XmlStreamConstants GetEventType() const noexcept
直近のXMLストリームイベントの値を返します。
bool HasName() const noexcept
ローカル名等を取得できるかどうかを返します。
bool isVersionIgnored
読み込み時にtrueにすると、バイナリXML読み込み時にバージョンのチェックを行いません。 ...
bool IsCharacters() const noexcept
読み込んだデータがテキストノードかどうかを取得します。
XmlStreamConstants
XMLストリームの読み込みで発生したXMLストリームイベントの値です。
bool IsEndElement() const noexcept
読み込んだデータが終了タグかどうかを取得します。
void Close() noexcept
XmlStreamReaderをクローズします。基となるストリームは参照されなくなるだけでクローズされません。 ...
bool fragment
複数のルートノードを持つXML(XMLフラグメント)をサポートしたバイナリXMLを読み込みます。 ...
bool HasNext() const noexcept
次のXMLストリームイベントを取得できるかどうかを返します。
ビット単位にデータが詰められたEXIストリームを読み書きします(デフォルト)。
bool HasText() const noexcept
GetText()でテキストを取得できる状態かどうかを返します。
wchar_t ExiChar
XMLパーサーの内部文字列型のtypedefです。
XmlStreamReaderの初期化オプションとなる構造体です。