16 #ifndef INCLUDE_NN_NLIB_REALLOCOUTPUTSTREAM_H_ 17 #define INCLUDE_NN_NLIB_REALLOCOUTPUTSTREAM_H_ 28 typedef void* (*ReallocFunc)(
void* ptr,
size_t n)NLIB_NOEXCEPT_FUNCPTR;
30 explicit ReallocDeleter(ReallocFunc reallocfunc)
NLIB_NOEXCEPT : realloc_(reallocfunc) {}
32 ReallocFunc GetFunc() const
NLIB_NOEXCEPT {
return realloc_; }
42 typedef void* (*ReallocFunc)(
void* ptr,
size_t n)NLIB_NOEXCEPT_FUNCPTR;
59 if (this->ExpandOrShrink(this->
Pos()) == 0) {
65 #ifdef __cpp_rvalue_references 71 #ifdef __cpp_rvalue_references 77 return (newcap > capacity_) ? this->ExpandOrShrink(newcap) : 0;
87 ReallocFunc realloc_func_;
94 #endif // INCLUDE_NN_NLIB_REALLOCOUTPUTSTREAM_H_ #define NLIB_OVERRIDE
利用可能であればoverrideが定義されます。そうでない場合は空文字列です。
ReallocOutputStream() noexcept
デフォルトコンストラクタです。 nlib_realloc()でメモリの拡張を行うように設定します。 ...
UniquePtr< char[], ReallocDeleter > CharPtrType
charの配列へのUniquePtrをtypedefしたものです。
#define NLIB_DISALLOW_COPY_AND_ASSIGN(TypeName)
TypeName で指定されたクラスのコピーコンストラクタと代入演算子を禁止します。
nlib_realloc()等のrealloc関数を利用して拡張するメモリ領域に書きこむ出力ストリームです。 ...
size_t Pos() const noexcept
ストリーム上の現在位置を返します。
C++11環境(エイリアステンプレートが可能な環境)においてはstd::unique_ptrにエイリアステンプレートされま...
std::unique_ptrに相当するクラスが定義されています。
void ShrinkToFit() noexcept
バッファ・サイズを現在の書き込み位置にフィットさせます。
const uint8_t * Data() const noexcept
上記関数のconst修飾付き版です。
UniquePtr< uint8_t[], ReallocDeleter > UniquePtrType
uint8_tの配列へのUniquePtrをtypedefしたものです。
#define NLIB_NOEXCEPT
環境に合わせてnoexcept 又は同等の定義がされます。
ReallocOutputStream(ReallocFunc func) noexcept
realloc関数を指定してオブジェクトを構築します。
void ResetBuffer(void *p, size_t nbytes) noexcept
OutputStreamが持つバッファを設定します。
#define NLIB_FINAL
利用可能であればfinalが定義されます。そうでない場合は空文字列です。
#define NLIB_STATIC_ASSERT(exp)
静的アサートが定義されます。利用可能であればstatic_assertを利用します。
bool Reserve(size_t n) noexcept
サイズを指定して書き込み先バッファを確保します。
出力ストリームの基底クラスです。このクラスを実体化することはできません。