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, 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, 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
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 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/>.
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) 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/>.
This module embbed type constants from {FFI::NativeType}.
(see FFI.typedef)
# File lib/ffi/types.rb, line 32 def self.add_typedef(old, add) typedef old, add end
@return (see FFI::LastError.error) @see FFI::LastError.error
# File lib/ffi/errno.rb, line 24 def self.errno FFI::LastError.error end
@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
@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
@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
@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
@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
Generated with the Darkfish Rdoc Generator 2.