--- /dev/null
+#
+# PhysicsFS - ruby interface
+#
+# Author: Ed Sinjiashvili (slimb@vlinkmail.com)
+# License: LGPL
+#
+
+require 'physfs_so'
+
+module PhysicsFS
+
+ class Version
+ def initialize major, minor, patch
+ @major = major
+ @minor = minor
+ @patch = patch
+ end
+
+ attr_reader :major, :minor, :patch
+
+ def to_s
+ "#@major.#@minor.#@patch"
+ end
+ end
+
+ class ArchiveInfo
+ def initialize ext, desc, author, url
+ @extension = ext
+ @description = desc
+ @author = author
+ @url = url
+ end
+
+ attr_reader :extension, :description
+ attr_reader :author, :url
+
+ def to_s
+ " * #@extension: #@description\n Written by #@author.\n #@url\n"
+ end
+ end
+
+ #
+ # convenience methods
+ #
+ class << self
+
+ def init argv0 = $0
+ init_internal argv0
+ end
+
+ def append_search_path str
+ add_to_search_path str, 1
+ self
+ end
+
+ def prepend_search_path str
+ add_to_search_path str, 0
+ self
+ end
+
+ alias_method :<<, :append_search_path
+ alias_method :push, :append_search_path
+ alias_method :unshift, :prepend_search_path
+
+ def ls path = ""
+ enumerate path
+ end
+ end
+
+ #
+ # File - PhysicsFS abstract file - can be drawn from various sources
+ #
+ class File
+ def write_str str
+ write str, 1, str.length
+ end
+
+ def cat
+ prev_pos = tell
+ seek 0
+ r = read length, 1
+ seek prev_pos
+ r
+ end
+
+ alias_method :size, :length
+ end
+
+ #
+ # RWops - general stdio like operations on file-like creatures
+ #
+ class RWops
+ SEEK_SET = 0
+ SEEK_CUR = 1
+ SEEK_END = 2
+
+ # tell current position of RWopted entity
+ def tell
+ seek 0, SEEK_CUR
+ end
+
+ # length of RWops abstracted entity
+ def length
+ cur = tell
+ r = seek 0, SEEK_END
+ seek cur, SEEK_SET
+ r
+ end
+
+ alias_method :size, :length
+
+ #
+ # create rwops from PhysicsFS file object
+ #
+ def self.from_physfs file
+ file.to_rwops
+ end
+ end
+end
+
+# physfs.rb ends here #