nlib
nn::nlib::ReallocOutputStream クラスfinal

nlib_realloc()等のrealloc関数を利用して拡張するメモリ領域に書きこむ出力ストリームです。 [詳解]

#include "nn/nlib/ReallocOutputStream.h"

+ nn::nlib::ReallocOutputStream の継承関係図

公開型

typedef UniquePtr< uint8_t[], ReallocDeleter > UniquePtrType
 uint8_tの配列へのUniquePtrtypedefしたものです。 [詳解]
 
typedef UniquePtr< char[], ReallocDeleter > CharPtrType
 charの配列へのUniquePtrtypedefしたものです。
 
- 基底クラス nn::nlib::OutputStream に属する継承公開型
enum  BufferingMode {
  kBufferingModeBlockBuffered = 0,
  kBufferingModeLineBuffered,
  kBufferingModeUnbuffered
}
 OutputStreamのバッファリングモードです。 [詳解]
 

公開メンバ関数

uint8_t * Data () noexcept
 書込み中のデータの先頭へのポインタを取得します。 [詳解]
 
bool Reserve (size_t n) noexcept
 サイズを指定して書き込み先バッファを確保します。 [詳解]
 
void ShrinkToFit () noexcept
 バッファ・サイズを現在の書き込み位置にフィットさせます。 [詳解]
 
size_t Release (UniquePtrType *ptr) noexcept
 ストリームをクローズし、ストリームに書き込まれたデータをptr に移します。 [詳解]
 
bool ReleaseAsCstring (CharPtrType *ptr) noexcept
 '\0'を追記した後でストリームをクローズし、ストリームに書き込まれた文字列をptr に移します。 [詳解]
 
基本的なメンバ関数
 ReallocOutputStream () noexcept
 デフォルトコンストラクタです。nlib_realloc()でメモリの拡張を行うように設定します。
 
 ReallocOutputStream (ReallocFunc func) noexcept
 realloc関数を指定してオブジェクトを構築します。 [詳解]
 
virtual ~ReallocOutputStream () noexcept override
 デストラクタです。
 
- 基底クラス nn::nlib::OutputStream に属する継承公開メンバ関数
size_t Pos () const noexcept
 ストリーム上の現在位置を返します。 [詳解]
 
uint64_t Pos64 () const noexcept
 ストリーム上の現在位置を64bit整数で返します。 [詳解]
 
bool Write (int b) noexcept
 ストリームに1バイトのデータを書き込みます。 [詳解]
 
bool Write (const void *p, size_t n) noexcept
 ストリームにn バイトのデータを書き込みます。 [詳解]
 
bool WriteGather (const nlib_fd_iovec *iov, int iovcnt) noexcept
 複数の非連続のバッファからデータをストリームに書き出します。 [詳解]
 
bool Flush () noexcept
 ストリームをフラッシュします。 [詳解]
 
bool Close () noexcept
 ストリームをフラッシュした後、ストリームを閉じます。成功した場合にはtrueを返します。 [詳解]
 
errno_t GetErrorValue () const noexcept
 エラー値を取得します。 [詳解]
 
BufferingMode GetBufferingMode () const noexcept
 バッファリングモードを取得します。
 
 operator bool () const
 内部でエラーが発生していなければtrueを返します。
 
constexpr OutputStream () noexcept
 デフォルトコンストラクタです。
 
virtual ~OutputStream () noexcept
 デストラクタです。何もしません。
 

その他の継承メンバ

- 基底クラス nn::nlib::OutputStream に属する継承限定公開メンバ関数
void ResetBuffer (void *p, size_t nbytes) noexcept
 OutputStreamが持つバッファを設定します。 [詳解]
 
void SetError (errno_t e) const noexcept
 OutputStreamにエラーを設定します。 [詳解]
 
- 基底クラス nn::nlib::OutputStream に属する継承限定公開変数類
BufferingMode m_BufferingMode
 バッファリングモードが格納されています。 [詳解]
 

詳解

nlib_realloc()等のrealloc関数を利用して拡張するメモリ領域に書きこむ出力ストリームです。

説明
書き込みデータを格納するメモリ領域は4096バイトずつ拡張されていきます。 書き込み後にはバイト領域やC文字列としてデータを取り出すことができます。
// OutputStreamインターフェイスを利用してデータを書きこむ
....
os.Flush();
// 1) バイト列としてデータを取り出したい場合
size_t nbytes = os.Release(&data);
// data.get()でポインタ(uint8_t*型)を取り出すことができます。
// nbytesは書き込んだデータサイズに一致します。
// osは閉じられます。
// 2) C文字列としてデータを取り出したい場合
bool result = os.ReleaseAsCstring(&cstr);
if (nlib_is_error(result)) { エラー; }
// ReleaseAsCstringは末尾に'\0'を書き込んでからデータをcstrに移します。
// cstr.get()でchar*型を取り出すことができます。
// osは閉じられます。
各種例:
exi/serializer/serializer.cpp, exi/textparser/textparser.cpp, misc/usezlib/usezlib.cpp, msgpack/jsonrpc/jsonrpc.cpp, msgpack/jsonrpc/server.cpp, msgpack/msgpack2/msgpack2.cpp, msgpack/usertype/usertype.cpp, oss/binarypatch/binarypatch.cpp.

ReallocOutputStream.h26 行目に定義があります。

型定義メンバ詳解

◆ UniquePtrType

uint8_tの配列へのUniquePtrtypedefしたものです。

説明
デストラクタの起動時にfree()で解放されます。
各種例:
msgpack/jsonrpc/jsonrpc.cpp, msgpack/jsonrpc/server.cpp.

ReallocOutputStream.h40 行目に定義があります。

構築子と解体子

◆ ReallocOutputStream()

nn::nlib::ReallocOutputStream::ReallocOutputStream ( ReallocFunc  func)
inlineexplicitnoexcept

realloc関数を指定してオブジェクトを構築します。

引数
[in]funcrealloc動作を行う関数

ReallocOutputStream.h46 行目に定義があります。

関数詳解

◆ Data()

nn::nlib::ReallocOutputStream::Data ( )
inlinenoexcept

書込み中のデータの先頭へのポインタを取得します。

戻り値
データへのポインタ
説明
ポインタは書き込みの際にreallocによって変更されるかもしれないことに注意してください。

ReallocOutputStream.h50 行目に定義があります。

◆ Release()

nn::nlib::ReallocOutputStream::Release ( UniquePtrType ptr)
noexcept

ストリームをクローズし、ストリームに書き込まれたデータをptr に移します。

引数
[out]ptrデータがセットされるポインタ
戻り値
データサイズ

◆ ReleaseAsCstring()

nn::nlib::ReallocOutputStream::ReleaseAsCstring ( CharPtrType ptr)
noexcept

'\0'を追記した後でストリームをクローズし、ストリームに書き込まれた文字列をptr に移します。

引数
[out]ptrC文字列データがセットされるポインタ
戻り値
成功した場合('\0'の追記に成功した場合)はtrue

◆ Reserve()

nn::nlib::ReallocOutputStream::Reserve ( size_t  n)
inlinenoexcept

サイズを指定して書き込み先バッファを確保します。

引数
[in]n確保するバッファ・サイズ
戻り値
確保に成功した場合はtrue
各種例:
misc/usezlib/usezlib.cpp.

ReallocOutputStream.h53 行目に定義があります。

◆ ShrinkToFit()

nn::nlib::ReallocOutputStream::ShrinkToFit ( )
inlinenoexcept

バッファ・サイズを現在の書き込み位置にフィットさせます。

説明
Release()ReleaseAsCstring()を実行する際にも呼び出されます。

ReallocOutputStream.h54 行目に定義があります。


このクラス詳解は次のファイルから抽出されました: