16 #ifndef INCLUDE_NN_NLIB_EXI_XMLSTREAMWRITER_H_ 17 #define INCLUDE_NN_NLIB_EXI_XMLSTREAMWRITER_H_ 22 #if defined(_MSC_VER) && defined(nx_exi_EXPORTS) 23 #undef NLIB_VIS_PUBLIC 24 #define NLIB_VIS_PUBLIC NLIB_WINEXPORT 61 return Create(stream, settings, al);
65 return Create(stream, settings);
69 return Create(stream, settings, al);
72 if (is_local_al_) ExiAllocator::Swap(al_);
75 ExiAllocatorSwapper swapper(al_);
79 ExiAllocatorSwapper swapper(al_);
83 ExiAllocatorSwapper swapper(al_);
89 void WriteAttribute(
const ExiChar* prefix,
const ExiChar* namespace_uri,
92 if (NEXI_IS_ERROR)
return;
93 ExiAllocatorSwapper swapper(al_);
97 if (NEXI_IS_ERROR)
return;
98 ExiAllocatorSwapper swapper(al_);
104 if (NEXI_IS_ERROR)
return;
105 ExiAllocatorSwapper swapper(al_);
107 namespace_uri ? namespace_uri : NLIB_EXI_ESTR);
116 void WriteEmptyElement(
const ExiChar* prefix,
const ExiChar* namespace_uri,
119 if (NEXI_IS_ERROR)
return;
120 ExiAllocatorSwapper swapper(al_);
121 this->WriteStartDocument_();
126 if (NEXI_IS_ERROR)
return;
127 ExiAllocatorSwapper swapper(al_);
128 this->WriteEndDocument_();
131 if (NEXI_IS_ERROR)
return;
132 ExiAllocatorSwapper swapper(al_);
133 this->WriteEndElement_();
139 void WriteStartElement(
const ExiChar* prefix,
const ExiChar* namespace_uri,
142 return error_status_->GetError();
148 virtual void Close_() NLIB_NOEXCEPT = 0;
149 virtual void Flush_() NLIB_NOEXCEPT = 0;
150 virtual const ExiChar* GetPrefix_(
const ExiChar* uri) NLIB_NOEXCEPT = 0;
151 virtual void WriteAttribute_(
const ExiChar* prefix,
const ExiChar* namespace_uri,
152 const ExiChar* local_name,
const ExiChar* value) NLIB_NOEXCEPT = 0;
153 virtual void WriteCData_(
const ExiChar* data) NLIB_NOEXCEPT = 0;
154 virtual void WriteCharacters_(
const ExiChar* text) NLIB_NOEXCEPT = 0;
155 virtual void WriteComment_(
const ExiChar* data) NLIB_NOEXCEPT = 0;
156 virtual void WriteProcessingInstruction_(
const ExiChar* target,
157 const ExiChar* data) NLIB_NOEXCEPT = 0;
158 virtual void WriteStartElement_(
const ExiChar* prefix,
const ExiChar* namespace_uri,
159 const ExiChar* local_name) NLIB_NOEXCEPT = 0;
160 virtual void WriteEmptyElement_(
const ExiChar* prefix,
const ExiChar* namespace_uri,
161 const ExiChar* local_name) NLIB_NOEXCEPT {
162 this->WriteStartElement_(prefix, namespace_uri, local_name);
163 this->WriteEndElement();
165 virtual void WriteNamespace_(
const ExiChar* prefix,
166 const ExiChar* namespace_uri) NLIB_NOEXCEPT = 0;
167 virtual void WriteStartDocument_() NLIB_NOEXCEPT = 0;
168 virtual void WriteEndDocument_() NLIB_NOEXCEPT = 0;
169 virtual void WriteEndElement_() NLIB_NOEXCEPT = 0;
172 static bool IsNullOrEmptyString(
const ExiChar* p) NLIB_NOEXCEPT {
return (!p) || (*p ==
'\0'); }
173 void SetExiErrorStatus(
ExiErrorStatus* p) NLIB_NOEXCEPT { error_status_ = p; }
174 ExiErrorStatus* GetExiErrorStatus()
const NLIB_NOEXCEPT {
return error_status_; }
191 #if defined(_MSC_VER) && defined(nx_exi_EXPORTS) 192 #undef NLIB_VIS_PUBLIC 193 #define NLIB_VIS_PUBLIC NLIB_WINIMPORT 196 #endif // INCLUDE_NN_NLIB_EXI_XMLSTREAMWRITER_H_ bool encodeCookie
データの先頭に識別用の文字列を書きこむかを設定します。
void WriteDefaultNamespace(const ExiChar *namespace_uri) noexcept
デフォルト名前空間を宣言します。
void WriteStartElement(const ExiChar *local_name) noexcept
名前空間なしの要素で開始タグを書き込みます。
文字列型のtypedefやユーティリティマクロ等が定義されています。
#define NLIB_DISALLOW_COPY_AND_ASSIGN(TypeName)
TypeName で指定されたクラスのコピーコンストラクタと代入演算子を禁止します。
void WriteNamespace(const ExiChar *prefix, const ExiChar *namespace_uri) noexcept
XML名前空間を宣言します。
#define NLIB_SAFE_BOOL(class_name, exp)
クラス内に安全なoperator bool()を定義します。 可能であればC++11のexplicit boolを利用します。 ...
XmlProcessor processor
バイナリXMLを書きだすかテキストXMLを書きだすか指定します。
ExiErrorStatus::ErrorValue GetError() const noexcept
エラー値を取得します。
読み書きするバイナリXMLのデータ保持オプションです。
int version
バイナリXMLに記録されるバージョン番号を指定します。
void WriteEndElement() noexcept
終了タグを書き込みます。
void WriteEmptyElement(const ExiChar *local_name) noexcept
名前空間なしの要素で開始タグと終了タグをを書き込みます。
ExiErrorStatus * GetErrorStatus() const noexcept
エラー状態オブジェクトを取得します。
constexpr XmlStreamWriterSettings() noexcept
デフォルト設定がセットされます。
bool encodeOptions
設定の自動認識のための情報を書き込むかを設定します。
void WriteEndDocument() noexcept
開いている任意の要素を全て閉じ、XMLライタをクローズします。
Alignment
読み書きするバイナリXMLのアライメントを指定します。
XmlStreamReader, XmlStreamWriter の各インスタンス毎に設定できるアロケータです。
#define NLIB_EXI_ESTR
空文字列が定義されています。""又はL""です。
XmlProcessor
利用するXmlプロセッサの指定オプションです。
#define NLIB_NOEXCEPT
環境に合わせてnoexcept 又は同等の定義がされます。
Alignment alignment
バイナリXMLのアライメントを設定します。
#define NLIB_CEXPR
利用可能であればconstexprが定義されます。そうでない場合は空文字列です。
bool fragment
複数のルートノードを持つXML(XMLフラグメント)の書き込みをサポートします。デフォルトはfalseです。 ...
static XmlStreamWriter * Create(OutputStream *stream) noexcept
XmlStreamWriterSettingsをデフォルト設定でXmlStreamReaderのインスタンスを作成します。 ...
Preserve preserve
各種フィデリティオプションを設定します。
static XmlStreamWriter * Create(OutputStream *stream, const XmlStreamWriterSettings &settings) noexcept
XmlStreamWriterのインスタンスを作成します。
XmlStreamWriter の初期化オプションとなる構造体です。
void WriteAttribute(const ExiChar *local_name, const ExiChar *value) noexcept
名前空間なしの属性と値を書き込みます。
void WriteCData(const ExiChar *data) noexcept
引数で指定したテキストを書き込みます。
static XmlStreamWriter * Create(OutputStream *stream, const ExiAllocatorEx &al) noexcept
オブジェクト単位のアロケータを指定してXmlStreamWriterのインスタンスを作成します。 ...
void Flush() noexcept
XMLライタをフラッシュします。
XMLのストリームへの書き出しを行う抽象クラスです。
void WriteCharacters(const ExiChar *text) noexcept
引数で指定したテキストを書き込みます。
void Close() noexcept
XmlStreamWriterをクローズします。基となるストリームは切り離されるだけでクローズされません。 ...
const ExiChar * GetPrefix(const ExiChar *uri) noexcept
名前空間URIに対応するプレフィックスを取得します。
ビット単位にデータが詰められたEXIストリームを読み書きします(デフォルト)。
出力ストリームの基底クラスです。このクラスを実体化することはできません。
void WriteStartDocument() noexcept
XMLドキュメントの開始を宣言し、XML宣言等を書き込みます。
wchar_t ExiChar
XMLパーサーの内部文字列型のtypedefです。