Sha256: f8f005b9c7fef89fe982656fafea53a7a6047a655b136c210a2074e5f300ee7f

Contents?: true

Size: 1.6 KB

Versions: 181

Compression:

Stored size: 1.6 KB

Contents

#
# Copyright (C) 2008, 2009 Wayne Meissner
#
# All rights reserved.
#
# This file is part of ruby-ffi.
#
# This code is free software: you can redistribute it and/or modify it under
# the terms of the GNU Lesser General Public License version 3 only, as
# published by the Free Software Foundation.
#
# This code is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License
# version 3 for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# version 3 along with this work.  If not, see <http://www.gnu.org/licenses/>.
#

module FFI
  
  # This module implements a couple of class methods to play with IO.
  module IO
    # @param [Integer] fd file decriptor
    # @param [String] mode mode string
    # @return [::IO]
    # Synonym for IO::for_fd.
    def self.for_fd(fd, mode = "r")
      ::IO.for_fd(fd, mode)
    end

    # @param [#read] io io to read from
    # @param [AbstractMemory] buf destination for data read from +io+
    # @param [nil, Numeric] len maximul number of bytes to read from +io+. If +nil+, 
    #  read until end of file.
    # @return [Numeric] length really read, in bytes
    #
    # A version of IO#read that reads data from an IO and put then into a native buffer.
    # 
    # This will be optimized at some future time to eliminate the double copy.
    #
    def self.native_read(io, buf, len)
      tmp = io.read(len)
      return -1 unless tmp
      buf.put_bytes(0, tmp)
      tmp.length
    end

  end
end

Version data entries

181 entries across 165 versions & 14 rubygems

Version Path
ffi-1.2.0.pre3-x86-mingw32 lib/ffi/io.rb
ffi-1.2.0.pre3 lib/ffi/io.rb
classiccms-0.6.7 vendor/bundle/gems/ffi-1.0.11/lib/ffi/io.rb
ffi-1.2.0.pre2-x86-mingw32 lib/ffi/io.rb
ffi-1.2.0.pre2 lib/ffi/io.rb
fragrant-0.0.5 vendor/bundle/ruby/1.9.1/gems/ffi-1.1.5/lib/ffi/io.rb
classiccms-0.6.6 vendor/bundle/gems/ffi-1.0.11/lib/ffi/io.rb
classiccms-0.6.5 vendor/bundle/gems/ffi-1.0.11/lib/ffi/io.rb
classiccms-0.6.4 vendor/bundle/gems/ffi-1.0.11/lib/ffi/io.rb
classiccms-0.6.3 vendor/bundle/gems/ffi-1.0.11/lib/ffi/io.rb
classiccms-0.6.2 vendor/bundle/gems/ffi-1.0.11/lib/ffi/io.rb
classiccms-0.6.1 vendor/bundle/gems/ffi-1.0.11/lib/ffi/io.rb
classiccms-0.6.0 vendor/bundle/gems/ffi-1.0.11/lib/ffi/io.rb
classiccms-0.5.17 vendor/bundle/gems/ffi-1.0.11/lib/ffi/io.rb
classiccms-0.5.16 vendor/bundle/gems/ffi-1.0.11/lib/ffi/io.rb
ffi-1.1.5-x86-mingw32 lib/ffi/io.rb
ffi-1.1.6.pre2-x86-mingw32 lib/ffi/io.rb
ffi-1.1.6.pre2 lib/ffi/io.rb
ffi-1.2.0.pre1 lib/ffi/io.rb
classiccms-0.5.15 vendor/bundle/gems/ffi-1.0.11/lib/ffi/io.rb