目次 - SDL 3.0 API(機能別) - I/Oストリーム - SDL_IOStreamInterface

SDL_IOStreamInterface

SDL_IOStreamの処理を行う関数へのポインタの構造体

ヘッダ

SDL3/SDL_iostream.h

フィールド

Uint32version このインターフェースのバージョン
Sint64 (SDLCALL *)(void *userdata)size このSDL_IOStreamのバイト数を戻す関数

データストリームの全サイズを戻す. エラーのとき-1を戻す.
Sint64 (SDLCALL *)(void *userdata, Sint64 offset, SDL_IOWhence whence)seek シーク位置をwhenceからoffsetだけ移動する関数
whenceは次の値の1つである: SDL_IO_SEEK_SET, SDL_IO_SEEK_CUR, SDL_IO_SEEK_END

データストリームの移動後のシーク位置を戻す. エラーのとき-1を戻す.
size_t (SDLCALL *)(void *userdata, void *ptr, size_t size, SDL_IOStatus *status)read データストリームから最大sizeバイトを読み込み, ptrに書き込む関数
sizeは常に >0 である.
読み込みが完了しなかった場合, *statusSDL_IOStatus列挙体の値を設定する必要がある. 読み込みに成功した場合は設定する必要はない.

読み込んだバイト数を戻す.
size_t (SDLCALL *)(void *userdata, const void *ptr, size_t size, SDL_IOStatus *status);write データストリームへptrポインタからちょうどsizeバイトを書き込む関数
sizeは常に >0 である.
書き込みが完了しなかった場合, *statusSDL_IOStatus列挙体の値を設定する必要がある. 書き込みに成功した場合は設定する必要はない.

書き込んだバイト数を戻す.
bool (SDLCALL *)(void *userdata, SDL_IOStatus *status);flush ストリームがバッファしている場合, データを確実に書き込む関数
失敗した場合, *statusSDL_IOStatus列挙体の値を設定する必要がある. 成功した場合は設定する必要はない.

成功のとき真, データの掃き出しに失敗したとき偽を戻す.
bool (SDLCALL *)(void *userdata);close クローズして資源を解放する関数
この関数は物理メディアへのファイルの書き込みの同期を保証しない. システムのファイルキャッシュ内にあり, ディスクへの書き込みを待っている可能性がある.
この関数が失敗してもSDL_IOStreamは破棄される. そのため, バッファの掃き出しなどが失敗しても後処理を全て行うこと

成功のとき真, データの掃き出しで書き込みエラーが生じたとき偽を戻す.

詳細

アプリケーションは, この構造体をSDL_OpenIO()に渡して独自のSDL_IOStreamを生成することができる. これは必須ではない. SDLにはSDL_IOFromFile()SDL_IOFromMem()のような一般的なI/Oストリームが既に用意されている.

この構造体はSDL_INIT_INTERFACE()で初期化する必要がある.

バージョン

SDL 3.2.0以降

関連項目

SDL Wikiへのリンク

SDL_IOStreamInterface - SDL Wiki