目次 - SDL 3.0 API(機能別) - ストレージ - SDL_EnumerateStorageDirectory

SDL_EnumerateStorageDirectory

コールバックを通してストレージコンテナのディレクトリの内容を列挙する

ヘッダ

SDL3/SDL_storage.h

構文

bool SDL_EnumerateStorageDirectory(SDL_Storage *storage, const char *path, SDL_EnumerateDirectoryCallback callback, void *userdata);

引数

SDL_Storage *storageストレージコンテナ
const char *path列挙するディレクトリのパス名. NULLのときルート
SDL_EnumerateDirectoryCallbackcallbackディレクトリ内の各項目に対して呼ばれる関数
void *userdatacallbackに渡すポインタ

戻り値

(bool) 成功のとき真, 失敗のとき偽を戻す. SDL_GetError()を呼んで詳細を知ることができる.

詳細

この関数はアプリケーションが渡したコールバックを通してディレクトリ内の各項目を提供する. コールバックは, 全ての項目を提供する, またはコールバックがSDL_ENUM_SUCCESSまたはSDL_ENUM_FAILUREを戻すまで, ディレクトリ内のそれぞれの項目につき1回ずつ呼ばれる.

この関数は, 一般的なシステムの問題が発生した, またはコールバックがSDL_ENUM_FAILUREを戻したとき, 偽を戻す. 成功は, コールバックが列挙を完了してSDL_ENUM_SUCCESSを戻した, またはディレクトリの全ての項目を列挙したことを意味する.

passがNULLの場合, ストレージコンテナのツリーのルートの列挙と見なされる. 空の文字列の場合も同様である.

スレッドセーフ

storageオブジェクトがスレッドセーフとみなすことができれば, この関数はどのスレッドからも安全に呼べる.

バージョン

SDL 3.2.0以降

サンプルコード

// サンプルプログラム
// SDL3を利用してタイトルストレージ内の全てのディレクトリを列挙する

#include <SDL3/SDL.h>
#include <SDL3/SDL_main.h>


SDL_EnumerationResult
my_enumerate_dir_callback(void *userdata, const char* dirname, const char* fname)
{
    SDL_Log("ディレクトリ名: %s | ファイル名: %s", dirname, fname);
    return SDL_ENUM_CONTINUE;
}

int
main(int argc, char** argv)
{
    SDL_Storage *storage = SDL_OpenTitleStorage("", 0);
    if(storage == NULL) {
        SDL_Log("ストレージのオープンに失敗した %s", SDL_GetError());
    }

    if(!SDL_EnumerateStorageDirectory(storage, NULL, my_enumerate_dir_callback, NULL)) {
        SDL_Log("システムの問題が発生またはコールバックが失敗を示した");
    } else {
        SDL_Log("全てのディレクトリを列挙またはコールバックが列挙を中止した");
    }

    return 0;
}

関連項目

SDL Wikiへのリンク

SDL_EnumerateStorageDirectory - SDL Wiki