module FFI::Library
def enum(*args)
-
(FFI::Enum)
-
Parameters:
-
values
(Array
) -- values for enum -
native_type
(FFI::Type
) -- native type for new enum -
args
() -- values for enum
-
native_type
(FFI::Type
) -- native type for new enum -
values
(Array
) -- values for enum -
name
(Symbol
) -- name for new enum -
native_type
(FFI::Type
) -- native type for new enum -
values
(Array
) -- values for enum -
args
() -- values for enum
-
values
(Array
) -- values for enum -
name
(Symbol
) -- name for new enum
Overloads:
-
enum(native_type, values)
-
enum(native_type, *args)
-
enum(native_type, name, values)
-
enum(values)
-
enum(*args)
-
enum(name, values)
def enum(*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::Enum.new(native_type, values, name) : FFI::Enum.new(values, name)) # If called as enum :foo, [ :zero, :one, :two ], add a typedef alias typedef(e, name) if name e end