16 #ifndef INCLUDE_NN_NLIB_BINARYREADER_H_ 17 #define INCLUDE_NN_NLIB_BINARYREADER_H_ 20 #include "nn/nlib/Swap.h" 24 NLIB_EXPIMP_TEMPLATE(detail::MiniBufIn<512>);
37 #define NLIB_BINR(tp) return this->Read_(reinterpret_cast<tp*>(x)) 58 size_t rem = mini_buf_.size();
63 mini_buf_.Advance(rem);
65 return this->Skip_(n);
76 return this->
ReadArray(reinterpret_cast<unsigned long long*>(x), n);
78 return this->
ReadArray(reinterpret_cast<unsigned int*>(x), n);
86 return this->
ReadArray(reinterpret_cast<unsigned char*>(x), n);
89 return this->
ReadArray(reinterpret_cast<unsigned char*>(x), n);
92 return this->
ReadArray(reinterpret_cast<unsigned short*>(x), n);
95 return this->
ReadArray(reinterpret_cast<unsigned int*>(x), n);
99 return this->
ReadArray(reinterpret_cast<unsigned long long*>(x), n);
101 return this->
ReadArray(reinterpret_cast<unsigned int*>(x), n);
105 return this->
ReadArray(reinterpret_cast<unsigned long long*>(x), n);
110 template<
class T,
size_t N>
118 if (errno_ == 0) errno_ = e;
135 if (!this->Read_(&v.i))
return false;
144 if (!this->Read_(&v.i))
return false;
150 InputStream* stream_;
153 detail::MiniBufIn<512> mini_buf_;
158 namespace binary_reader {
181 template<
class T,
size_t N>
188 #endif // INCLUDE_NN_NLIB_BINARYREADER_H_ bool Read(unsigned long long *x) noexcept
ストリームからバイナリでunsigned long long型のデータを読み取ります。成功した場合はtrueを返します。 ...
bool Skip(size_t n) noexcept
ストリームからn バイトを読み飛ばします。
size_t ReadArray(unsigned char *x, size_t n) noexcept
ストリームからバイナリでunsigned char型のデータ列を読み取ります。
bool Read(unsigned char *x) noexcept
ストリームからバイナリでunsigned char型のデータを読み取ります。成功した場合はtrueを返します。 ...
errno_t GetErrorValue() const noexcept
書き込み等が失敗した際に、エラーの原因を取得できます。
bool Read(signed char *x) noexcept
ストリームからバイナリでsigned char型のデータを読み取ります。成功した場合はtrueを返します。 ...
#define NLIB_DISALLOW_COPY_AND_ASSIGN(TypeName)
TypeName で指定されたクラスのコピーコンストラクタと代入演算子を禁止します。
#define NLIB_SAFE_BOOL(class_name, exp)
クラス内に安全なoperator bool()を定義します。 可能であればC++11のexplicit boolを利用します。 ...
size_t ReadArray(char *x, size_t n) noexcept
ストリームからバイナリでchar型のデータ列を読み取ります。
void SetError(errno_t e) noexcept
エラーを設定します。既にエラーが設定されている場合にはエラーは設定されません。
bool Read(int *x) noexcept
ストリームからバイナリでint型のデータを読み取ります。成功した場合はtrueを返します。 ...
bool Read(double *x) noexcept
ストリームからバイナリでdouble型のデータを読み取ります。成功した場合はtrueを返します。 ...
BinaryReader() noexcept
デフォルトコンストラクタです。
bool Read(short *x) noexcept
ストリームからバイナリでshort型のデータを読み取ります。成功した場合はtrueを返します。 ...
size_t ReadArray(unsigned long *x, size_t n) noexcept
ストリームからバイナリでunsigned long型のデータ列を読み取ります。
size_t ReadArray(int *x, size_t n) noexcept
ストリームからバイナリでint型のデータ列を読み取ります。
bool Read(unsigned int *x) noexcept
ストリームからバイナリでunsigned int型のデータを読み取ります。成功した場合はtrueを返します。 ...
bool Read(float *x) noexcept
ストリームからバイナリでfloat型のデータを読み取ります。成功した場合はtrueを返します。 ...
size_t ReadArray(long long *x, size_t n) noexcept
ストリームからバイナリでlong long型のデータ列を読み取ります。
#define NLIB_NOEXCEPT
環境に合わせてnoexcept 又は同等の定義がされます。
bool Read(unsigned short *x) noexcept
ストリームからバイナリでunsigned short型のデータを読み取ります。成功した場合はtrueを返します。 ...
size_t ReadArray(short *x, size_t n) noexcept
ストリームからバイナリでshort型のデータ列を読み取ります。
EndianSetting
エンディアンを指定します。
bool Close() noexcept
バイナリリーダをクローズします。
size_t ReadArray(signed char *x, size_t n) noexcept
ストリームからバイナリでsigned char型のデータ列を読み取ります。
#define NLIB_FINAL
利用可能であればfinalが定義されます。そうでない場合は空文字列です。
int Peek() noexcept
ストリームの先頭1バイトを参照します。
bool Read(BinaryReader *r, T *x)
この関数テンプレートを特殊化することで、ユーザー定義クラスに読み込むことができます。 ...
ストリーム(InputStream)からバイナリを読み込むクラスです。
bool Read(unsigned long *x) noexcept
ストリームからバイナリでunsigned long型のデータを読み取ります。成功した場合はtrueを返します。 ...
errno_t Init() noexcept
プログラムが動作しているマシンと同じエンディアンでバイナリリーダーを初期化します。 ...
bool Read(long *x) noexcept
ストリームからバイナリでlong型のデータを読み取ります。成功した場合はtrueを返します。 ...
~BinaryReader() noexcept
デストラクタです。 ストリームをクローズしません。
size_t ReadArray(long *x, size_t n) noexcept
ストリームからバイナリでlong型のデータ列を読み取ります。
bool Read(long long *x) noexcept
ストリームからバイナリでlong long型のデータを読み取ります。成功した場合はtrueを返します。 ...
bool Read(char *x) noexcept
ストリームからバイナリでchar型のデータを読み取ります。成功した場合はtrueを返します。 ...
bool ReadArray(BinaryReader *r, T *x, size_t n)
この関数テンプレートを特殊化することで、ユーザー定義クラスに読み込むことができます。 ...