    # File lib/ffi/library.rb, line 229
        def enum(*args)
          #
          # enum can be called as:
          # enum :zero, :one, :two  # unnamed enum
          # enum [ :zero, :one, :two ] # equivalent to above
          # enum :foo, [ :zero, :one, :two ] create an enum named :foo
          #
          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 = FFI::Enum.new(values, name))

          # If called as enum :foo, [ :zero, :one, :two ], add a typedef alias
          typedef(e, name) if name
          e
        end