nlib
nn::nlib::BinaryWriter クラスfinal

ストリーム(OutputStream)にバイナリを書き込むクラスです。 [詳解]

#include "nn/nlib/BinaryWriter.h"

公開型

enum  EndianSetting {
  DEFAULT = 0,
  ENDIAN_LITTLE,
  ENDIAN_BIG
}
 エンディアンを指定します。 [詳解]
 

公開メンバ関数

errno_t Init (EndianSetting endian) noexcept
 エンディアンを指定してバイナリライタを初期化します。 [詳解]
 
errno_t Init () noexcept
 プログラムが動作しているマシンと同じエンディアンでバイナリライタを初期化します。 [詳解]
 
errno_t Open (OutputStream *stream) noexcept
 バイナリライタにストリームを関連付けます。 [詳解]
 
template<class T >
bool Write (T x) noexcept
 binary_writer::Write() を呼び出します。
 
template<class T >
bool WriteArray (const T *x, size_t n) noexcept
 binary_writer::WriteArray() を呼び出します。
 
template<class T , size_t N>
bool WriteArray (const T(&a)[N]) noexcept
 ストリームに数値型の配列を書き込みます。 [詳解]
 
bool Flush () noexcept
 バイナリライタとベースストリームをフラッシュします。 [詳解]
 
bool Close () noexcept
 バイナリライタをクローズします。 [詳解]
 
void SetError (errno_t e) noexcept
 エラーを設定します。既にエラーが設定されている場合にはエラーは設定されません。 [詳解]
 
errno_t GetErrorValue () const noexcept
 書き込み等が失敗した際に、エラーの原因を取得できます。 [詳解]
 
OutputStreamGetStream () noexcept
 テキストライタが書き込みを行うストリームを取得します。 [詳解]
 
 operator bool () const
 内部でエラーが発生していなければtrueを返します。
 
基本的なメンバ関数
 BinaryWriter () noexcept
 デフォルトコンストラクタです。
 
 ~BinaryWriter () noexcept
 デストラクタです。ストリームをクローズしません。
 
基本データ型の書き込み
bool Write (char x) noexcept
 ストリームにバイナリでchar型のデータを書き込みます。成功した場合はtrueを返します。
 
bool Write (signed char x) noexcept
 ストリームにバイナリでsigned char型のデータを書き込みます。成功した場合はtrueを返します。
 
bool Write (unsigned char x) noexcept
 ストリームにバイナリでunsigned char型のデータを書き込みます。成功した場合はtrueを返します。
 
bool Write (short x) noexcept
 ストリームにバイナリでshort型のデータを書き込みます。成功した場合はtrueを返します。
 
bool Write (unsigned short x) noexcept
 ストリームにバイナリでunsigned short型のデータを書き込みます。成功した場合はtrueを返します。
 
bool Write (int x) noexcept
 ストリームにバイナリでint型のデータを書き込みます。成功した場合はtrueを返します。
 
bool Write (unsigned int x) noexcept
 ストリームにバイナリでunsigned int型のデータを書き込みます。成功した場合はtrueを返します。
 
bool Write (long x) noexcept
 ストリームにバイナリでlong型のデータを書き込みます。成功した場合はtrueを返します。
 
bool Write (unsigned long x) noexcept
 ストリームにバイナリでunsigned long型のデータを書き込みます。成功した場合はtrueを返します。
 
bool Write (long long x) noexcept
 ストリームにバイナリでlong long型のデータを書き込みます。成功した場合はtrueを返します。
 
bool Write (unsigned long long x) noexcept
 ストリームにバイナリでunsigned long long型のデータを書き込みます。成功した場合はtrueを返します。
 
bool Write (float x) noexcept
 ストリームにバイナリでfloat型のデータを書き込みます。成功した場合はtrueを返します。
 
bool Write (double x) noexcept
 ストリームにバイナリでdouble型のデータを書き込みます。成功した場合はtrueを返します。
 
基本データ型配列の書き込み
bool WriteArray (const unsigned char *x, size_t n) noexcept
 ストリームにバイナリでunsigned char型の配列を書き込みます。成功した場合はtrueを返します。nが0の場合も成功します。
 
bool WriteArray (const unsigned short *x, size_t n) noexcept
 ストリームにバイナリでunsigned short型の配列を書き込みます。成功した場合はtrueを返します。nが0の場合も成功します。
 
bool WriteArray (const unsigned int *x, size_t n) noexcept
 ストリームにバイナリでunsigned int型の配列を書き込みます。成功した場合はtrueを返します。nが0の場合も成功します。
 
bool WriteArray (const unsigned long long *x, size_t n) noexcept
 ストリームにバイナリでunsigned long long型の配列を書き込みます。成功した場合はtrueを返します。nが0の場合も成功します。
 
bool WriteArray (const unsigned long *x, size_t n) noexcept
 ストリームにバイナリでunsigned long型の配列を書き込みます。成功した場合はtrueを返します。nが0の場合も成功します。
 
bool WriteArray (const float *x, size_t n) noexcept
 ストリームにバイナリでfloat型の配列を書き込みます。成功した場合はtrueを返します。nが0の場合も成功します。
 
bool WriteArray (const double *x, size_t n) noexcept
 ストリームにバイナリでdouble型の配列を書き込みます。成功した場合はtrueを返します。nが0の場合も成功します。
 
bool WriteArray (const signed char *x, size_t n) noexcept
 ストリームにバイナリでsigned char型の配列を書き込みます。成功した場合はtrueを返します。nが0の場合も成功します。
 
bool WriteArray (const char *x, size_t n) noexcept
 ストリームにバイナリでchar型の配列を書き込みます。成功した場合はtrueを返します。nが0の場合も成功します。
 
bool WriteArray (const short *x, size_t n) noexcept
 ストリームにバイナリでshort型の配列を書き込みます。成功した場合はtrueを返します。nが0の場合も成功します。
 
bool WriteArray (const int *x, size_t n) noexcept
 ストリームにバイナリでint型の配列を書き込みます。成功した場合はtrueを返します。nが0の場合も成功します。
 
bool WriteArray (const long *x, size_t n) noexcept
 ストリームにバイナリでlong型の配列を書き込みます。成功した場合はtrueを返します。nが0の場合も成功します。
 
bool WriteArray (const long long *x, size_t n) noexcept
 ストリームにバイナリでlong long型の配列を書き込みます。成功した場合はtrueを返します。nが0の場合も成功します。
 

詳解

ストリーム(OutputStream)にバイナリを書き込むクラスです。

説明
ストリームデータのエンディアンを指定することが可能で、ストリームへの書き込みはエンディアンの指定に従って行われます。
OutputStream* stream = ....;
BinaryWriter writer;
// リトルエンディアンで書き込みます。
if (nlib_is_error(writer.Init(stream, BinaryWriter::ENDIAN_LITTLE))) { エラー; }
....
writer.Write(各種数値型の値); // 数値を1つ書き込みます。
....
writer.WriteArray(各種数値型の配列へのポインタ, 要素数); // 配列を書き込みます。
writer.Flush();
if (nlib_is_error(writer)) { エラー; }
writer.Close();

BinaryWriter.h13 行目に定義があります。

列挙型メンバ詳解

§ EndianSetting

エンディアンを指定します。

列挙値
DEFAULT 

プログラムが動作しているマシンと同じエンディアンで書き込みます。

ENDIAN_LITTLE 

リトルエンディアンで書き込みます。

ENDIAN_BIG 

ビッグエンディアンで書き込みます。

BinaryWriter.h15 行目に定義があります。

関数詳解

§ Close()

nn::nlib::BinaryWriter::Close ( )
noexcept

バイナリライタをクローズします。

戻り値
成功した場合はtrue
説明
ベースストリームをフラッシュした後バイナリライタをクローズし、ベースストリームを切り離します。 この操作ではベースストリームはクローズされません。

§ Flush()

nn::nlib::BinaryWriter::Flush ( )
noexcept

バイナリライタとベースストリームをフラッシュします。

戻り値
成功した場合はtrue

§ GetErrorValue()

nn::nlib::BinaryWriter::GetErrorValue ( ) const
inlinenoexcept

書き込み等が失敗した際に、エラーの原因を取得できます。

戻り値
0エラーは発生していません。
EINVAL引数が間違っている。
EEXIST初期化を2重に行おうとした。
EBADF書き込みストリームが存在しない。
EIO何らかの原因でストリームへの書き込みに失敗した。

BinaryWriter.h90 行目に定義があります。

§ GetStream()

nn::nlib::BinaryWriter::GetStream ( )
inlinenoexcept

テキストライタが書き込みを行うストリームを取得します。

戻り値
ストリームへのポインタ

BinaryWriter.h91 行目に定義があります。

§ Init() [1/2]

nn::nlib::BinaryWriter::Init ( EndianSetting  endian)
noexcept

エンディアンを指定してバイナリライタを初期化します。

引数
[in]endianエンディアン指定
戻り値
成功した場合は0

§ Init() [2/2]

nn::nlib::BinaryWriter::Init ( )
inlinenoexcept

プログラムが動作しているマシンと同じエンディアンでバイナリライタを初期化します。

戻り値
成功した場合は0

BinaryWriter.h23 行目に定義があります。

§ Open()

nn::nlib::BinaryWriter::Open ( OutputStream stream)
noexcept

バイナリライタにストリームを関連付けます。

引数
[in]streamストリーム
戻り値
成功した場合は0

§ SetError()

nn::nlib::BinaryWriter::SetError ( errno_t  e)
inlinenoexcept

エラーを設定します。既にエラーが設定されている場合にはエラーは設定されません。

引数
[in]eエラー値
説明
ユーザー定義型を書きこむユーザーコードにおいて、エラーを発生させたい場合に利用することができます。

BinaryWriter.h87 行目に定義があります。

§ WriteArray()

template<class T , size_t N>
nn::nlib::BinaryWriter::WriteArray ( const T(&)  a[N])
inlinenoexcept

ストリームに数値型の配列を書き込みます。

テンプレート引数
T数値型(e.g. int32_t, float, ...)
引数
[in]a書き込まれる配列
戻り値
成功した場合はtrue

BinaryWriter.h135 行目に定義があります。


このクラス詳解は次のファイルから抽出されました: