module RbSDL2::Filesystem

Public Class Methods

base_path() click to toggle source

RbSDL2 にロードされた SDL2 の配置パスを戻す。 パスの末尾にはパスの区切り文字がかならずある。 パスの区切り記号は環境依存である。Windows であれば “" が使われる。 Ruby は環境依存のパスの区切り文字を正しく取り扱うことができる。

# File lib/rb_sdl2/filesystem.rb, line 8
def base_path
  ptr = ::SDL2.SDL_GetBasePath
  raise RbSDL2Error if ptr.null?
  ptr.read_string.force_encoding(Encoding::UTF_8)
ensure
  ::SDL2.SDL_free(ptr)
end
pref_path(org_name, app_name) click to toggle source

アプリケーションが書き込むことのできるパスを戻す。 このパスはユーザ毎に存在し、かつアプリケーション固有のものであり OS によって保証されている。 org_name, app_name 引数はパスの生成に利用される。引数にパスの区切り記号がある場合はそれを取り除く。 ここに SDL2 が提示した守るべきルールの要約を記す。

  • アプリケーション内でこのメソッドw呼び出す際は org_name は常に同じ文字列を使うこと。

  • アプリケーションごとに違う app_name を使うこと.

  • アプリケーションに一度割り当てた app_name は変更しないこと。

  • 使用する文字はアルファベット, 数字, 空白のみにすること.

注意: このメソッドを呼ぶと SDL はこのメソッドが戻すパスを実際に作成する。 書き込みを行わなかった場合、空のフォルダーが残る。 引数に空文字を渡しすことも、また既存のフォルダーになるように引数を与えることもできる。 SDL が知りたいことはアプリケーションがアクセス可能かどうかだけだ。 エラーが出るかどうかはユーザが設定するパスのアクセス制限による。

# File lib/rb_sdl2/filesystem.rb, line 30
def pref_path(org_name, app_name)
  ptr = ::SDL2.SDL_GetPrefPath(org_name.encode(Encoding::UTF_8),
                               app_name.encode(Encoding::UTF_8))
  raise RbSDL2Error if ptr.null?
  ptr.read_string.force_encoding(Encoding::UTF_8)
ensure
  ::SDL2.SDL_free(ptr)
end