16 #ifndef INCLUDE_NN_NLIB_BINARYWRITER_H_ 17 #define INCLUDE_NN_NLIB_BINARYWRITER_H_ 20 #include "nn/nlib/Swap.h" 24 NLIB_EXPIMP_TEMPLATE(detail::MiniBufOut<512>);
32 DEFAULT = kEndianDefault,
33 ENDIAN_LITTLE = kEndianLittle,
34 ENDIAN_BIG = kEndianBig
40 swap_endian_(false) {}
46 #define NLIB_BINW(tp) return this->Write_(static_cast<tp>(x)) 47 bool Write(
char x) NLIB_NOEXCEPT { NLIB_BINW(uint8_t); }
48 bool Write(
signed char x) NLIB_NOEXCEPT { NLIB_BINW(uint8_t); }
49 bool Write(
unsigned char x) NLIB_NOEXCEPT { NLIB_BINW(uint8_t); }
50 bool Write(
short x) NLIB_NOEXCEPT { NLIB_BINW(uint16_t); }
51 bool Write(
unsigned short x) NLIB_NOEXCEPT { NLIB_BINW(uint16_t); }
52 bool Write(
int x) NLIB_NOEXCEPT { NLIB_BINW(uint32_t); }
53 bool Write(
unsigned int x) NLIB_NOEXCEPT { NLIB_BINW(uint32_t); }
56 bool Write(
long long x) NLIB_NOEXCEPT { NLIB_BINW(uint64_t); }
57 bool Write(
unsigned long long x) NLIB_NOEXCEPT { NLIB_BINW(uint64_t); }
58 bool Write(
float x) NLIB_NOEXCEPT { NLIB_BINW(
float); }
59 bool Write(
double x) NLIB_NOEXCEPT { NLIB_BINW(
double); }
69 bool WriteArray(
const unsigned long* x,
size_t n) NLIB_NOEXCEPT {
71 return this->
WriteArray(reinterpret_cast<const unsigned long long*>(x), n);
73 return this->
WriteArray(reinterpret_cast<const unsigned int*>(x), n);
79 bool WriteArray(
const signed char* x,
size_t n) NLIB_NOEXCEPT {
80 return this->
WriteArray(reinterpret_cast<const unsigned char*>(x), n);
83 return this->
WriteArray(reinterpret_cast<const unsigned char*>(x), n);
85 bool WriteArray(
const short* x,
size_t n) NLIB_NOEXCEPT {
86 return this->
WriteArray(reinterpret_cast<const unsigned short*>(x), n);
89 return this->
WriteArray(reinterpret_cast<const unsigned int*>(x), n);
93 return this->
WriteArray(reinterpret_cast<const unsigned long long*>(x), n);
95 return this->
WriteArray(reinterpret_cast<const unsigned int*>(x), n);
98 bool WriteArray(
const long long* x,
size_t n) NLIB_NOEXCEPT {
99 return this->
WriteArray(reinterpret_cast<const unsigned long long*>(x), n);
103 template <
class T,
size_t N>
108 if (errno_ == 0) errno_ = e;
128 detail::MiniBufOut<512> mini_buf_;
133 namespace binary_writer {
154 template <
class T,
size_t N>
161 #endif // INCLUDE_NN_NLIB_BINARYWRITER_H_ bool Write(unsigned long x) noexcept
ストリームにバイナリでunsigned long型のデータを書き込みます。成功した場合はtrueを返します。 ...
OutputStream * GetStream() noexcept
テキストライタが書き込みを行うストリームを取得します。
#define NLIB_DISALLOW_COPY_AND_ASSIGN(TypeName)
TypeName で指定されたクラスのコピーコンストラクタと代入演算子を禁止します。
#define NLIB_SAFE_BOOL(class_name, exp)
クラス内に安全なoperator bool()を定義します。 可能であればC++11のexplicit boolを利用します。 ...
bool WriteArray(const unsigned char *x, size_t n) noexcept
ストリームにバイナリでunsigned char型の配列を書き込みます。成功した場合はtrueを返します。nが0の場合も...
bool Write(float x) noexcept
ストリームにバイナリでfloat型のデータを書き込みます。成功した場合はtrueを返します。 ...
errno_t GetErrorValue() const noexcept
書き込み等が失敗した際に、エラーの原因を取得できます。
bool Write(unsigned short x) noexcept
ストリームにバイナリでunsigned short型のデータを書き込みます。成功した場合はtrueを返します。 ...
errno_t Init() noexcept
プログラムが動作しているマシンと同じエンディアンでバイナリライタを初期化します。
~BinaryWriter() noexcept
デストラクタです。ストリームをクローズしません。
bool Write(char x) noexcept
ストリームにバイナリでchar型のデータを書き込みます。成功した場合はtrueを返します。 ...
bool Write(BinaryWriter *w, T x)
この関数テンプレートを特殊化することで、ユーザー定義クラスを書きこむことができます。 ...
bool Write(unsigned int x) noexcept
ストリームにバイナリでunsigned int型のデータを書き込みます。成功した場合はtrueを返します。 ...
bool Write(long long x) noexcept
ストリームにバイナリでlong long型のデータを書き込みます。成功した場合はtrueを返します。 ...
bool Write(unsigned char x) noexcept
ストリームにバイナリでunsigned char型のデータを書き込みます。成功した場合はtrueを返します。 ...
bool WriteArray(BinaryWriter *w, const T *x, size_t n)
この関数テンプレートを特殊化することで、ユーザー定義クラスを書きこむことができます。 ...
void SetError(errno_t e) noexcept
エラーを設定します。既にエラーが設定されている場合にはエラーは設定されません。
bool WriteArray(const long long *x, size_t n) noexcept
ストリームにバイナリでlong long型の配列を書き込みます。成功した場合はtrueを返します。nが0の場合も成功...
bool WriteArray(const long *x, size_t n) noexcept
ストリームにバイナリでlong型の配列を書き込みます。成功した場合はtrueを返します。nが0の場合も成功しま...
errno_tをラップするクラスです。Visual Studioのデバッガ上での表示を改善します。
bool Write(long x) noexcept
ストリームにバイナリでlong型のデータを書き込みます。成功した場合はtrueを返します。 ...
bool Write(int x) noexcept
ストリームにバイナリでint型のデータを書き込みます。成功した場合はtrueを返します。 ...
bool Write(short x) noexcept
ストリームにバイナリでshort型のデータを書き込みます。成功した場合はtrueを返します。 ...
#define NLIB_NOEXCEPT
環境に合わせてnoexcept 又は同等の定義がされます。
EndianSetting
エンディアンを指定します。
bool WriteArray(const unsigned long *x, size_t n) noexcept
ストリームにバイナリでunsigned long型の配列を書き込みます。成功した場合はtrueを返します。nが0の場合も...
bool WriteArray(const int *x, size_t n) noexcept
ストリームにバイナリでint型の配列を書き込みます。成功した場合はtrueを返します。nが0の場合も成功します...
ストリーム(OutputStream)にバイナリを書き込むクラスです。
bool Write(signed char x) noexcept
ストリームにバイナリでsigned char型のデータを書き込みます。成功した場合はtrueを返します。 ...
#define NLIB_FINAL
利用可能であればfinalが定義されます。そうでない場合は空文字列です。
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の場合も成功しま...
BinaryWriter() noexcept
デフォルトコンストラクタです。
bool Write(double x) noexcept
ストリームにバイナリでdouble型のデータを書き込みます。成功した場合はtrueを返します。 ...
出力ストリームの基底クラスです。このクラスを実体化することはできません。
bool Write(unsigned long long x) noexcept
ストリームにバイナリでunsigned long long型のデータを書き込みます。成功した場合はtrueを返します。 ...
bool WriteArray(const short *x, size_t n) noexcept
ストリームにバイナリでshort型の配列を書き込みます。成功した場合はtrueを返します。nが0の場合も成功しま...