前のページ次のページ上に戻るホーム SophiaFramework 2.2
SFUMemoryStream
メモリストリームを表すクラスです。
#include <SFUMemoryStream.hpp>
class SFUMemoryStream : public SFUStream;
typedef SFUMemoryStream&          SFUMemoryStreamRef;
typedef SFUMemoryStream*          SFUMemoryStreamPtr;
typedef SFUMemoryStream**         SFUMemoryStreamHandle;
typedef const SFUMemoryStream     ConstSFUMemoryStream;
typedef const SFUMemoryStream&    ConstSFUMemoryStreamRef;
typedef const SFUMemoryStream*    ConstSFUMemoryStreamPtr;
typedef const SFUMemoryStream**   ConstSFUMemoryStreamHandle;

継承図

SFUMemoryStream クラスの継承図

解説

SFUMemoryStream は、メモリストリームを表すクラスです。 メモリに対して読み込みや書き込みを行います。 メモリへの書き込みにともなう自動拡張も行います。

参照

SFUStream

メンバ

コンストラクタ/デストラクタ
public
SFUMemoryStream SFUMemoryStream クラスのコンストラクタです。
public
~SFUMemoryStream SFUMemoryStream クラスのデストラクタです。
パブリック関数
public
Available 読み取り可能なデータサイズを取得します。
public
Close メモリストリームをクローズします。
public
Exception (SFAException から継承) エラーコードを取得/設定します。
public
Get ストリームからデータを読み込みます。
public
GetBuffer 内部で確保されているメモリバッファのポインタを取得します。
public
GetBufferSize 内部で確保されているメモリバッファのサイズを取得します。
public
GetSize メモリストリームの有効サイズを取得します。
public
IsEOS 読み取りポインタがストリーム終端に達したかどうかを返します。
public
Open メモリバッファを確保してメモリストリームをオープンします。
public
Put ストリームにデータを書き込みます。
public
Seek 読み込み/書き込みポインタを指定された位置にシークします。
public
Tell 現在のストリーム位置を返します。
public
operator<< (SFUStream から継承) ストリームのインサータ (書き込み演算子) です。
public
operator>> (SFUStream から継承) ストリームのエクストラクタ (読み取り演算子) です。
プロテクト関数
public
Exception (SFAException から継承) エラーコードを取得/設定します。
protected
endianbig (SFUStream から継承) 読み込みモード/書き込みモードのエンディアンをビッグエンディアンに設定します。
protected
endianlittle (SFUStream から継承) 読み込みモード/書き込みモードのエンディアンをリトルエンディアンに設定します。
protected
multi (SFUStream から継承) 任意のサイズのデータを読み書きします。
protected
offset (SFUStream から継承) ストリームの読み込み/書き込みポインタを指定された位置に移動します。
protected
seek (SFUStream から継承) ストリームの読み込み/書き込みポインタを指定された位置に移動します。
EndianEnum (SFUStream から継承) ストリームのエンディアン変換を表す定数です。
NO_ERROR (SFAException から継承) エラーがないことを表す定数です。
SeekEnum (SFUStream から継承) ストリームのシークモードを表す定数です。

SFUMemoryStream::SFUMemoryStream
SFUMemoryStream クラスのコンストラクタです。
[ public ]
SFUMemoryStream(Void);

解説

データメンバを初期化します。 メモリバッファは確保しません。 エラー値に SFERR_NO_ERROR が設定されます。

参照

SFUMemoryStream::Open


SFUMemoryStream::~SFUMemoryStream
SFUMemoryStream クラスのデストラクタです。
[ public, virtual ]
~SFUMemoryStream(Void);

解説

メモリストリームがオープンされている場合は自動的にクローズします。

参照

SFUMemoryStream::Close


SFUMemoryStream::Available
読み取り可能なデータサイズを取得します。
[ public, virtual ]
UInt32 Available(Void);

解説

現在の読み取り位置から読み取り可能なデータサイズを返します。 ストリームがオープンされていない場合は、0 を返します。 エラー値は設定されません。

参照

SFUMemoryStream::IsEOS


SFUMemoryStream::Close
メモリストリームをクローズします。
[ public ]
VoidPtr Close(
    Bool detach = FALSE   // メモリバッファを解放せずに切り離すか
);

解説

メモリストリームをクローズします。

detach 引数が FALSE の場合、 メモリバッファを保持していればそれを解放し、 NULL を返します。

detach 引数が TRUE の場合、 メモリバッファを呼び出し側に返します。 この場合、メモリバッファは解放されませんので、 開発者が FREE() を使用してバッファを解放してください。

参照

SFUMemoryStream::Open


SFUMemoryStream::Get
ストリームからデータを読み込みます。
[ public, virtual ]
UInt32 Get(
    VoidPtr ptr   // 読み取ったデータを格納するポインタ
    UInt32 size   // 読み取るデータサイズ
);

戻り値

失敗した場合は 0 を返します。 成功した場合は、実際に読み込まれたバイト数 (size) を返します。

解説

ストリームからデータを読み込みます。

  • ptr が NULL で size が 0 でない場合はエラー値 SFERR_INVALID_PARAM が設定されます。
  • 特定できないエラーが発生した場合は エラー値 SFERR_STREAM_READ_FAILED が設定されます。
  • 成功した場合はエラー値 SFERR_NO_ERROR が設定されます。

エラーが発生した場合は、読み込みポインタが変化することはありません。

参照

SFUMemoryStream::Put


SFUMemoryStream::GetBuffer
内部で確保されているメモリバッファのポインタを取得します。
[ public, const ]
VoidPtr GetBuffer(Void);

参照

SFUMemoryStream::GetBufferSize


SFUMemoryStream::GetBufferSize
内部で確保されているメモリバッファのサイズを取得します。
[ public, const ]
UInt32 GetBufferSize(Void);

参照

SFUMemoryStream::GetBuffer


SFUMemoryStream::GetSize
メモリストリームの有効サイズを取得します。
[ public, const ]
UInt32 GetSize(Void);

解説

メモリストリームの有効サイズを取得します。 メモリストリームは効率化のためにメモリバッファを余分に確保するため、 この値は、GetBufferSize で取得されるサイズと等しいとは限らず、 一般にそれ以下のサイズになります。


SFUMemoryStream::IsEOS
読み取りポインタがストリーム終端に達したかどうかを返します。
[ public, virtual ]
Bool IsEOS(Void);

解説

読み取りポインタがストリーム終端に達したかどうかを返します。 ストリームがオープンされていない場合は TRUE を返します。

参照

SFUMemoryStream::Available


SFUMemoryStream::Open
メモリバッファを確保してメモリストリームをオープンします。
[ public ]
SFCError Open(
    UInt32 initSize         // メモリバッファの初期サイズ
    Bool canExtend = TRUE   // メモリバッファを自動拡張するか
);
[ public ]
SFCError Open(
    VoidPtr buffer          // アタッチするメモリポインタ
    UInt32 size             // アタッチするメモリサイズ
    Bool canExtend = TRUE   // メモリバッファを自動拡張するか
);

引数

initSize

メモリバッファの初期サイズを指定します。

canExtend

メモリバッファを自動拡張するかどうかを指定します。 canExtend が TRUE に設定された場合、メモリバッファは書き込みに応じて自動的に拡張されます。

戻り値

設定されたエラー値を返します。 エラーは戻り値で取得できますが、Exception() メンバ関数でも取得できます。

解説

  • メモリバッファが既に確保されている場合はエラー値 SFERR_STREAM_ALREADY_OPEN が設定されます。
  • initSize に 0 を指定すると、エラー値 SFERR_INVALID_PARAM が設定されます。
  • 指定されたサイズのメモリバッファを確保できなかった場合はエラー値 SFERR_NO_MEMORY が設定されます。
  • オープンに成功するとエラー値 SFERR_NO_ERROR が設定されます。

初期サイズを指定してオープンした場合、 ストリームの有効範囲は 0 になります。

既存のメモリポインタをアタッチした場合、 ストリームの有効範囲は指定されたメモリサイズになります。

参照

SFUMemoryStream::Close


SFUMemoryStream::Put
ストリームにデータを書き込みます。
[ public, virtual ]
UInt32 Put(
    ConstVoidPtr ptr   // 書き込みデータのポインタ
    UInt32 size        // 書き込むデータのサイズ
);

戻り値

書き込まれたサイズを返します。 失敗すると 0 を返します。 成功すると size 引数の値を返します。

解説

  • ptr が NULL で size が 0 でない場合は、エラー値 SFERR_INVALID_PARAM が設定されます。
  • ストリームがオープンされていない場合は、エラー値 SFERR_STREAM_NOT_OPEN が設定されます。
  • 書き込みに失敗した場合はエラー値 SFERR_STREAM_WRITE_FAILED が設定されます。

参照

SFUMemoryStream::Get


SFUMemoryStream::Seek
読み込み/書き込みポインタを指定された位置にシークします。
[ public, virtual ]
UInt32 Seek(
    SInt32 offset   // 基準位置からのオフセット
    SeekEnum dir    // 基準位置
    ModeEnum mode   // 読み込みポインタ/書き込みポインタの指定
);

戻り値

成功すると新しい位置を返します。 失敗すると UInt32(-1) を返します。

解説

読み込み/書き込みポインタを指定された位置にシークします。

  • 指定されたモードでストリームがオープンされていない場合は エラー値 SFERR_STREAM_NOT_OPEN が設定されます。
  • 無効な基準位置や無効なモードが指定された場合は エラー値 SFERR_INVALID_PARAM が設定されます。
  • 範囲外の値が指定された場合はエラー値 SFERR_FAILED が設定されます。
  • 成功した場合はエラー値 SFERR_NO_ERROR が設定されます。

参照

SFUMemoryStream::Tell


SFUMemoryStream::Tell
現在のストリーム位置を返します。
[ public, virtual ]
UInt32 Tell(
    ModeEnum mode   // 読み込み/書き込みモードの指定
);

戻り値

成功すると現在のストリーム位置を返します。 失敗すると UInt32(-1) を返します。

解説

  • ストリームがオープンされていない場合は エラー値 SFERR_STREAM_NOT_OPEN が設定されます。
  • 無効なモードが指定された場合は、エラー値 SFERR_INVALID_PARAM を設定し、UInt32(-1) を返します。
  • 成功した場合はエラー値 SFERR_NO_ERROR が設定されます。

参照

SFUMemoryStream::Seek