3 #ifndef INCLUDE_NN_NLIB_BINARYWRITER_H_
4 #define INCLUDE_NN_NLIB_BINARYWRITER_H_
7 #include "nn/nlib/Swap.h"
26 #define NLIB_BINW(tp) \
27 if (NLIB_LIKELY(m_Stream)) return this->Write_(static_cast<tp>(x)); \
53 bool WriteArray(
const unsigned long* x,
size_t n) NLIB_NOEXCEPT {
55 return this->
WriteArray(reinterpret_cast<const unsigned long long*>(x), n);
57 return this->
WriteArray(reinterpret_cast<const unsigned int*>(x), n);
63 bool WriteArray(
const signed char* x,
size_t n) NLIB_NOEXCEPT {
64 return this->
WriteArray(reinterpret_cast<const unsigned char*>(x), n);
67 return this->
WriteArray(reinterpret_cast<const unsigned char*>(x), n);
69 bool WriteArray(
const short* x,
size_t n) NLIB_NOEXCEPT {
70 return this->
WriteArray(reinterpret_cast<const unsigned short*>(x), n);
73 return this->
WriteArray(reinterpret_cast<const unsigned int*>(x), n);
77 return this->
WriteArray(reinterpret_cast<const unsigned long long*>(x), n);
79 return this->
WriteArray(reinterpret_cast<const unsigned int*>(x), n);
82 bool WriteArray(
const long long* x,
size_t n) NLIB_NOEXCEPT {
83 return this->
WriteArray(reinterpret_cast<const unsigned long long*>(x), n);
87 template <
class T,
size_t N>
89 bool Flush() NLIB_NOEXCEPT;
90 bool Close() NLIB_NOEXCEPT;
92 if (m_ErrorValue == 0) m_ErrorValue = e;
100 bool Write_(uint8_t x) NLIB_NOEXCEPT;
101 bool Write_(uint16_t x) NLIB_NOEXCEPT;
102 bool Write_(uint32_t x) NLIB_NOEXCEPT;
103 bool Write_(uint64_t x) NLIB_NOEXCEPT;
104 bool Write_(
float x) NLIB_NOEXCEPT;
105 bool Write_(
double x) NLIB_NOEXCEPT;
106 bool WriteStream() NLIB_NOEXCEPT;
109 unsigned char m_Buf[512];
110 unsigned char* m_Cur;
113 unsigned char m_SwapEndian;
118 namespace binary_writer {
139 template <
class T,
size_t N>
146 #endif // INCLUDE_NN_NLIB_BINARYWRITER_H_
bool Write(unsigned long x) noexcept
ストリームにバイナリでunsigned long型のデータを書き込みます。成功した場合はtrueを返します。 ...
#define NLIB_NOEXCEPT
環境に合わせてnoexcept 又は同等の定義がされます。
OutputStream * GetStream() noexcept
テキストライタが書き込みを行うストリームを取得します。
#define NLIB_FINAL
利用可能であればfinalが定義されます。そうでない場合は空文字列です。
#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の場合も...
errno_t GetErrorValue() const noexcept
書き込み等が失敗した際に、エラーの原因を取得できます。
bool Write(float x) noexcept
ストリームにバイナリでfloat型のデータを書き込みます。成功した場合はtrueを返します。 ...
bool Write(unsigned short x) noexcept
ストリームにバイナリでunsigned short型のデータを書き込みます。成功した場合はtrueを返します。 ...
~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)
この関数テンプレートを特殊化することで、ユーザー定義クラスを書きこむことができます。 ...
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の場合も成功しま...
bool Write(long x) noexcept
ストリームにバイナリでlong型のデータを書き込みます。成功した場合はtrueを返します。 ...
bool Write(int x) noexcept
ストリームにバイナリでint型のデータを書き込みます。成功した場合はtrueを返します。 ...
bool Write(short x) noexcept
ストリームにバイナリでshort型のデータを書き込みます。成功した場合はtrueを返します。 ...
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を返します。 ...
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の場合も成功しま...