summaryrefslogtreecommitdiff
path: root/lib/ffi/enum.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/ffi/enum.rb')
-rw-r--r--lib/ffi/enum.rb18
1 files changed, 12 insertions, 6 deletions
diff --git a/lib/ffi/enum.rb b/lib/ffi/enum.rb
index 9dcf4fa..1b0b898 100644
--- a/lib/ffi/enum.rb
+++ b/lib/ffi/enum.rb
@@ -86,10 +86,16 @@ module FFI
attr_reader :tag
- # @param [nil, Enumerable] info
- # @param tag enum tag
- def initialize(info, tag=nil)
- @tag = tag
+ # @overload initialize(info, tag=nil)
+ # @param [nil, Enumerable] info
+ # @param [nil, Symbol] tag enum tag
+ # @overload initialize(native_type, info, tag=nil)
+ # @param [FFI::Type] native_type Native type for new Enum
+ # @param [nil, Enumerable] info symbols and values for new Enum
+ # @param [nil, Symbol] tag name of new Enum
+ def initialize(*args)
+ @native_type = args.shift if args.first.kind_of?(FFI::Type)
+ info, @tag = *args
@kv_map = Hash.new
unless info.nil?
last_cst = nil
@@ -144,9 +150,9 @@ module FFI
alias to_hash symbol_map
# Get native type of Enum
- # @return [Type::INT]
+ # @return [Type]
def native_type
- Type::INT
+ @native_type || Type::INT
end
# @param [Symbol, Integer, #to_int] val