16 #ifndef INCLUDE_NN_NLIB_REALLOCOUTPUTSTREAM_H_ 17 #define INCLUDE_NN_NLIB_REALLOCOUTPUTSTREAM_H_ 30 typedef void* (*ReallocFunc)(
void* ptr,
size_t n) NLIB_NOEXCEPT_FUNCPTR;
32 explicit ReallocDeleter(ReallocFunc reallocfunc)
NLIB_NOEXCEPT : realloc_(reallocfunc) {}
34 ReallocFunc GetFunc()
const NLIB_NOEXCEPT {
return realloc_; }
42 typedef void* (*ReallocFunc)(
void* ptr,
size_t n) NLIB_NOEXCEPT_FUNCPTR;
45 : data_(NULL), realloc_func_(
nlib_realloc), capacity_(0) {}
47 : data_(NULL), realloc_func_(func), capacity_(0) {}
55 if (this->ExpandOrShrink(this->Pos()) == 0) {
56 this->ResetBuffer(data_ + capacity_, 0);
67 errno_t Expand(
size_t newcap) NLIB_NOEXCEPT {
68 return (newcap > capacity_) ? this->ExpandOrShrink(newcap) : 0;
71 virtual bool PushBuffer_(
const void* p,
size_t nbytes,
74 virtual void* GetWorkBuffer_(
size_t* nbytes) NLIB_NOEXCEPT
NLIB_OVERRIDE;
78 ReallocFunc realloc_func_;
85 #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関数を利用して拡張するメモリ領域に書きこむ出力ストリームです。 ...
UniquePtrはポインタの所有権を保持し、UniquePtrがスコープから出るときにデストラクタでポインタをDELで指...
std::unique_ptrに相当するクラスが定義されています。
void ShrinkToFit() noexcept
バッファ・サイズを現在の書き込み位置にフィットさせます。
UniquePtr< uint8_t[], ReallocDeleter > UniquePtrType
uint8_tの配列へのUniquePtrをtypedefしたものです。
#define NLIB_NOEXCEPT
環境に合わせてnoexcept 又は同等の定義がされます。
uint8_t * Data() noexcept
書込み中のデータの先頭へのポインタを取得します。
ReallocOutputStream(ReallocFunc func) noexcept
realloc関数を指定してオブジェクトを構築します。
#define NLIB_FINAL
利用可能であればfinalが定義されます。そうでない場合は空文字列です。
#define NLIB_STATIC_ASSERT(exp)
静的アサートが定義されます。利用可能であればstatic_assertを利用します。
bool Reserve(size_t n) noexcept
サイズを指定して書き込み先バッファを確保します。
出力ストリームの基底クラスです。このクラスを実体化することはできません。