module FFI::Library
Public Instance Methods
bitmask(*args)
click to toggle source
@overload bitmask(name, values)
Create a named bitmask @example bitmask :foo, [:red, :green, :blue] # bits 0,1,2 are used bitmask :foo, [:red, :green, 5, :blue] # bits 0,5,6 are used @param [Symbol] name for new bitmask @param [Array<Symbol, Integer>] values for new bitmask
@overload bitmask(*args)
Create an unamed bitmask @example bm = bitmask :red, :green, :blue # bits 0,1,2 are used bm = bitmask :red, :green, 5, blue # bits 0,5,6 are used @param [Symbol, Integer] args values for new bitmask
@overload bitmask(values)
Create an unamed bitmask @example bm = bitmask [:red, :green, :blue] # bits 0,1,2 are used bm = bitmask [:red, :green, 5, blue] # bits 0,5,6 are used @param [Array<Symbol, Integer>] values for new bitmask
@overload bitmask(native_type, name, values)
Create a named enum and specify the native type. @example bitmask FFI::Type::UINT64, :foo, [:red, :green, :blue] @param [FFI::Type] native_type native type for new bitmask @param [Symbol] name for new bitmask @param [Array<Symbol, Integer>] values for new bitmask
@overload bitmask(native_type, *args)
@example bitmask FFI::Type::UINT64, :red, :green, :blue @param [FFI::Type] native_type native type for new bitmask @param [Symbol, Integer] args values for new bitmask
@overload bitmask(native_type, values)
Create a named enum and specify the native type. @example bitmask FFI::Type::UINT64, [:red, :green, :blue] @param [FFI::Type] native_type native type for new bitmask @param [Array<Symbol, Integer>] values for new bitmask
@return [FFI::Bitmask] Create a new FFI::Bitmask
# File lib/ffi/bitmask.rb, line 46 def bitmask(*args) native_type = args.first.kind_of?(FFI::Type) ? args.shift : nil name, values = if args[0].kind_of?(Symbol) && args[1].kind_of?(Array) [ args[0], args[1] ] elsif args[0].kind_of?(Array) [ nil, args[0] ] else [ nil, args ] end @ffi_enums = FFI::Enums.new unless defined?(@ffi_enums) @ffi_enums << (e = native_type ? FFI::Bitmask.new(native_type, values, name) : FFI::Bitmask.new(values, name)) typedef(e, name) if name e end