目次 - API(機能別) - ファイルシステム - SDL_GetBasePath

SDL_GetBasePath

アプリケーションを起動したディレクトリを得る. ここがアプリケーションデータディレクトリである.

構文

char* SDL_GetBasePath(void)

戻り値

アプリケーションデータディレクトリのUTF-8の絶対パス名を戻す. 失敗またはこの関数が実装されていない環境の場合NULLを戻す. SDL_GetError()で詳細を知ることができる.

サンプルコード

char *data_path = NULL;

void InitializeDataPath() {
    char *base_path = SDL_GetBasePath();
    if (base_path) {
        data_path = base_path;
    } else {
        data_path = SDL_strdup("./");
    }
}

詳細

この関数は高速である必要はないはずだ. それでも速さが必要ならば, 最初に呼んだときに文字列を保存する必要がある.

Mac OS XとiOSの特別な仕様: アプリケーションが".app"バンドルされていれば, この関数はリソースディレクトリ(例: MyApp.app/Contents/Resources/)を戻す. この動作はInfo.plistにプロパティを追加して上書きできる. SDL_FILESYSTEM_BASE_DIR_TYPE 文字列キーに値を追加すると動作を変えられる.

SDL_FILESYSTEM_BASE_DIR_TYPE プロパティの値 (アプリケーションは /Applications/SDLApp/MyApp.app にあるとする):

説明
resourceバンドルされたリソースディレクトリ (デフォルト)/Applications/SDLApp/MyApp.app/Contents/Resources
bundleバンドルディレクトリ/Applications/SDLApp/MyApp.app/
parentバンドルディレクトリのあるディレクトリ/Applications/SDLApp/

ニンテンドーDSの特別な仕様: 実行ファイルの外部にリソースを置くことが一般的でないため, この関数はアプリケーションの"romfs"ディレクトリを戻す. このディレクトリは書き込み不可である.

戻されたパスは最後が区切り記号(Windowsなら'¥', 他の環境なら'/')で終わっていることが保障されている.

このポインタの管理はプログラマが行う. 使い終わったらSDL_free()を呼ぶ必要がある.

バージョン

SDL 2.0.1以降

関連項目(関数)

SDL_GetPrefPath

SDL Wikiへのリンク

SDL_GetBasePath - SDL Wiki