### Home Classes Methods

### In Files

- lib/ffi/enum.rb
- lib/ffi/tools/struct_generator.rb
- lib/ffi/tools/generator.rb
- lib/ffi/tools/types_generator.rb
- lib/ffi/tools/const_generator.rb
- lib/ffi/variadic.rb
- lib/ffi/pointer.rb
- lib/ffi/union.rb
- lib/ffi/platform.rb
- lib/ffi/struct_layout_builder.rb
- lib/ffi/struct.rb
- lib/ffi/version.rb
- lib/ffi/io.rb
- lib/ffi/library.rb
- lib/ffi/errno.rb
- lib/ffi/types.rb
- lib/ffi/autopointer.rb
- lib/ffi/managedstruct.rb
- ext/ffi_c/ffi.c

### Namespace

- MODULE FFI::IO
- MODULE FFI::Library
- MODULE FFI::Platform
- CLASS FFI::AutoPointer
- CLASS FFI::ConstGenerator
- CLASS FFI::Enum
- CLASS FFI::Enums
- CLASS FFI::Generator
- CLASS FFI::ManagedStruct
- CLASS FFI::NotFoundError
- CLASS FFI::PlatformError
- CLASS FFI::Pointer
- CLASS FFI::StrPtrConverter
- CLASS FFI::Struct
- CLASS FFI::StructGenerator
- CLASS FFI::StructLayout
- CLASS FFI::StructLayoutBuilder
- CLASS FFI::TypesGenerator
- CLASS FFI::Union
- CLASS FFI::VariadicInvoker

### Methods

- ::add_typedef
- ::errno
- ::errno=
- ::find_type
- ::map_library_name
- ::type_size
- ::typedef

### Files

- Makefile
- ChangeLog
- LICENSE
- README
- compile
- configure
- depcomp
- stamp-vti
- install-sh
- libtool-version
- mdate-sh
- missing

### Class/Module Index

Quicksearch

- FFI
- FFI::AutoPointer
- FFI::AutoPointer::CallableReleaser
- FFI::AutoPointer::DefaultReleaser
- FFI::AutoPointer::Releaser
- FFI::ConstGenerator
- FFI::ConstGenerator::Constant
- FFI::Enum
- FFI::Enums
- FFI::Generator
- FFI::Generator::Task
- FFI::IO
- FFI::Library
- FFI::ManagedStruct
- FFI::NotFoundError
- FFI::Platform
- FFI::PlatformError
- FFI::Pointer
- FFI::StrPtrConverter
- FFI::Struct
- FFI::Struct::ManagedStructConverter
- FFI::StructGenerator
- FFI::StructGenerator::Field
- FFI::StructLayout
- FFI::StructLayout::Enum
- FFI::StructLayout::InnerStruct
- FFI::StructLayout::Mapped
- FFI::StructLayoutBuilder
- FFI::TypesGenerator
- FFI::Union
- FFI::VariadicInvoker

No matching classes.

# FFI

Copyright (C) 2009, 2010 Wayne Meissner Copyright (C) 2009 Luc Heinrich

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 <www.gnu.org/licenses/>.

Copyright (C) 2008, 2009 Wayne Meissner Copyright (C) 2009 Luc Heinrich 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 <www.gnu.org/licenses/>.

Copyright (C) 2008-2010 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 <www.gnu.org/licenses/>.

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 <www.gnu.org/licenses/>.

Copyright (C) 2008-2010 Wayne Meissner Copyright (C) 2008 Luc Heinrich <luc@honk-honk.com>

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 <www.gnu.org/licenses/>.

Copyright (C) 2008-2010 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 <www.gnu.org/licenses/>.

see {file:README}

Copyright (C) 2008-2010 Wayne Meissner Copyright (C) 2008 Mike Dalessio

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 <www.gnu.org/licenses/>.

This module embbed type constants from {FFI::NativeType}.

### Constants

CURRENT_PROCESS
VERSION

### Public Class Methods

add_typedef(old, add) click to toggle source

(see FFI.typedef)

    # File lib/ffi/types.rb, line 32
    def self.add_typedef(old, add)
      typedef old, add
    end

errno() click to toggle source

@return (see FFI::LastError.error) @see FFI::LastError.error

    # File lib/ffi/errno.rb, line 24
    def self.errno
      FFI::LastError.error
    end

errno=(error) click to toggle source

@param error (see FFI::LastError.error=) @return (see FFI::LastError.error=) @see FFI::LastError.error=

    # File lib/ffi/errno.rb, line 30
    def self.errno=(error)
      FFI::LastError.error = error
    end

find_type(name, type_map = nil) click to toggle source

@param [Type, DataConverter, Symbol] name @param [Hash] type_map if nil, {FFI::TypeDefs} is used @return [Type] Find a type in `type_map` ({FFI::TypeDefs}, by default) from a type objet, a type name (symbol). If `name` is a {DataConverter}, a new {Type::Mapped} is created.

    # File lib/ffi/types.rb, line 43
    def self.find_type(name, type_map = nil)
      if name.is_a?(Type)
        name

      elsif type_map && type_map.has_key?(name)
        type_map[name]

      elsif TypeDefs.has_key?(name)
        TypeDefs[name]

      elsif name.is_a?(DataConverter)
        (type_map || TypeDefs)[name] = Type::Mapped.new(name)

      else
        raise TypeError, "unable to resolve type '#{name}'"
      end
    end

map_library_name(lib) click to toggle source

@param [to_s] lib library name @return [String] library name formatted for current platform Transform a generic library name to a platform library name @example

    # Linux
    FFI.map_library_name 'c'     # -> "libc.so.6"
    FFI.map_library_name 'jpeg'  # -> "libjpeg.so"
    # Windows
    FFI.map_library_name 'c'     # -> "msvcrt.dll"
    FFI.map_library_name 'jpeg'  # -> "jpeg.dll"

    # File lib/ffi/library.rb, line 34
    def self.map_library_name(lib)
      # Mangle the library name to reflect the native library naming conventions
      lib = lib.to_s unless lib.kind_of?(String)
      lib = Library::LIBC if lib == 'c'

      if lib && File.basename(lib) == lib
        lib = Platform::LIBPREFIX + lib unless lib =~ /^#{Platform::LIBPREFIX}/
        r = Platform::IS_GNU ? "\\.so($|\\.[1234567890]+)" : "\\.#{Platform::LIBSUFFIX}$"
        lib += ".#{Platform::LIBSUFFIX}" unless lib =~ /#{r}/
      end

      lib
    end

type_size(type) click to toggle source

@param type `type` is an instance of class accepted by {FFI.find_type} @return [Numeric] Get `type` size, in bytes.

    # File lib/ffi/types.rb, line 159
    def self.type_size(type)
      find_type(type).size
    end

typedef(old, add) click to toggle source

@param [Type, DataConverter, Symbol] old type definition used by {FFI.find_type} @param [Symbol] add new type definition's name to add @return [Type] Add a definition type to type definitions.

    # File lib/ffi/types.rb, line 27
    def self.typedef(old, add)
      TypeDefs[add] = self.find_type(old)
    end

[Validate]

Generated with the Darkfish Rdoc Generator 2.