class Archive::BaseArchive
Public Class Methods
finalizer(archive, archive_free)
click to toggle source
# File lib/ffi-libarchive/archive.rb, line 333 def self.finalizer(archive, archive_free) proc do |*_args| archive_free[0].call(archive) if archive_free[0] end end
new(alloc, free)
click to toggle source
# File lib/ffi-libarchive/archive.rb, line 322 def initialize(alloc, free) @archive = nil @archive_free = nil @archive = alloc.call @archive_free = [nil] raise Error, @archive unless @archive @archive_free[0] = free ObjectSpace.define_finalizer(self, BaseArchive.finalizer(@archive, @archive_free)) end
Public Instance Methods
close()
click to toggle source
# File lib/ffi-libarchive/archive.rb, line 339 def close # TODO: do we need synchronization here? if @archive # TODO: Error check? @archive_free[0].call(@archive) end ensure @archive = nil @archive_free[0] = nil @data = nil end
errno()
click to toggle source
# File lib/ffi-libarchive/archive.rb, line 362 def errno C.archive_errno(@archive) end
error_string()
click to toggle source
# File lib/ffi-libarchive/archive.rb, line 358 def error_string C.archive_error_string(@archive) end
Protected Instance Methods
archive()
click to toggle source
# File lib/ffi-libarchive/archive.rb, line 351 def archive raise Error, "No archive open" unless @archive @archive end