-- AUTO GENERATED. DO NOT MODIFY!
-- Button ----------------------------------------------------------------------
local Loader = {}

function Loader.declareType()
    ffi.cdef [[
        typedef uint8 Button;
    ]]

    return 2, 'Button'
end

function Loader.defineType()
    local ffi = require('ffi')
    local libphx = require('libphx').lib
    local Button

    do -- C Definitions
        ffi.cdef [[
            cstr   Button_ToString(Button);
        ]]
    end

    do -- Global Symbol Table
        Button = {
            KeyboardBackquote            = 0,
            KeyboardBackslash            = 1,
            KeyboardBracketLeft          = 2,
            KeyboardBracketRight         = 3,
            KeyboardComma                = 4,
            KeyboardKey0                 = 5,
            KeyboardKey1                 = 6,
            KeyboardKey2                 = 7,
            KeyboardKey3                 = 8,
            KeyboardKey4                 = 9,
            KeyboardKey5                 = 10,
            KeyboardKey6                 = 11,
            KeyboardKey7                 = 12,
            KeyboardKey8                 = 13,
            KeyboardKey9                 = 14,
            KeyboardEqual                = 15,
            KeyboardIntlBackslash        = 16,
            KeyboardIntlRo               = 17,
            KeyboardIntlYen              = 18,
            KeyboardA                    = 19,
            KeyboardB                    = 20,
            KeyboardC                    = 21,
            KeyboardD                    = 22,
            KeyboardE                    = 23,
            KeyboardF                    = 24,
            KeyboardG                    = 25,
            KeyboardH                    = 26,
            KeyboardI                    = 27,
            KeyboardJ                    = 28,
            KeyboardK                    = 29,
            KeyboardL                    = 30,
            KeyboardM                    = 31,
            KeyboardN                    = 32,
            KeyboardO                    = 33,
            KeyboardP                    = 34,
            KeyboardQ                    = 35,
            KeyboardR                    = 36,
            KeyboardS                    = 37,
            KeyboardT                    = 38,
            KeyboardU                    = 39,
            KeyboardV                    = 40,
            KeyboardW                    = 41,
            KeyboardX                    = 42,
            KeyboardY                    = 43,
            KeyboardZ                    = 44,
            KeyboardMinus                = 45,
            KeyboardPeriod               = 46,
            KeyboardQuote                = 47,
            KeyboardSemicolon            = 48,
            KeyboardSlash                = 49,
            KeyboardAltLeft              = 50,
            KeyboardAltRight             = 51,
            KeyboardBackspace            = 52,
            KeyboardCapsLock             = 53,
            KeyboardContextMenu          = 54,
            KeyboardControlLeft          = 55,
            KeyboardControlRight         = 56,
            KeyboardEnter                = 57,
            KeyboardSuperLeft            = 58,
            KeyboardSuperRight           = 59,
            KeyboardShiftLeft            = 60,
            KeyboardShiftRight           = 61,
            KeyboardSpace                = 62,
            KeyboardTab                  = 63,
            KeyboardConvert              = 64,
            KeyboardKanaMode             = 65,
            KeyboardLang1                = 66,
            KeyboardLang2                = 67,
            KeyboardLang3                = 68,
            KeyboardLang4                = 69,
            KeyboardLang5                = 70,
            KeyboardNonConvert           = 71,
            KeyboardDelete               = 72,
            KeyboardEnd                  = 73,
            KeyboardHelp                 = 74,
            KeyboardHome                 = 75,
            KeyboardInsert               = 76,
            KeyboardPageDown             = 77,
            KeyboardPageUp               = 78,
            KeyboardDown                 = 79,
            KeyboardLeft                 = 80,
            KeyboardRight                = 81,
            KeyboardUp                   = 82,
            KeyboardNumLock              = 83,
            KeyboardNumpad0              = 84,
            KeyboardNumpad1              = 85,
            KeyboardNumpad2              = 86,
            KeyboardNumpad3              = 87,
            KeyboardNumpad4              = 88,
            KeyboardNumpad5              = 89,
            KeyboardNumpad6              = 90,
            KeyboardNumpad7              = 91,
            KeyboardNumpad8              = 92,
            KeyboardNumpad9              = 93,
            KeyboardNumpadAdd            = 94,
            KeyboardNumpadBackspace      = 95,
            KeyboardNumpadClear          = 96,
            KeyboardNumpadClearEntry     = 97,
            KeyboardNumpadComma          = 98,
            KeyboardNumpadDecimal        = 99,
            KeyboardNumpadDivide         = 100,
            KeyboardNumpadEnter          = 101,
            KeyboardNumpadEqual          = 102,
            KeyboardNumpadHash           = 103,
            KeyboardNumpadMemoryAdd      = 104,
            KeyboardNumpadMemoryClear    = 105,
            KeyboardNumpadMemoryRecall   = 106,
            KeyboardNumpadMemoryStore    = 107,
            KeyboardNumpadMemorySubtract = 108,
            KeyboardNumpadMultiply       = 109,
            KeyboardNumpadParenLeft      = 110,
            KeyboardNumpadParenRight     = 111,
            KeyboardNumpadStar           = 112,
            KeyboardNumpadSubtract       = 113,
            KeyboardEscape               = 114,
            KeyboardFn                   = 115,
            KeyboardFnLock               = 116,
            KeyboardPrintScreen          = 117,
            KeyboardScrollLock           = 118,
            KeyboardPause                = 119,
            KeyboardBrowserBack          = 120,
            KeyboardBrowserFavorites     = 121,
            KeyboardBrowserForward       = 122,
            KeyboardBrowserHome          = 123,
            KeyboardBrowserRefresh       = 124,
            KeyboardBrowserSearch        = 125,
            KeyboardBrowserStop          = 126,
            KeyboardEject                = 127,
            KeyboardLaunchApp1           = 128,
            KeyboardLaunchApp2           = 129,
            KeyboardLaunchMail           = 130,
            KeyboardMediaPlayPause       = 131,
            KeyboardMediaSelect          = 132,
            KeyboardMediaStop            = 133,
            KeyboardMediaTrackNext       = 134,
            KeyboardMediaTrackPrevious   = 135,
            KeyboardPower                = 136,
            KeyboardSleep                = 137,
            KeyboardAudioVolumeDown      = 138,
            KeyboardAudioVolumeMute      = 139,
            KeyboardAudioVolumeUp        = 140,
            KeyboardWakeUp               = 141,
            KeyboardMeta                 = 142,
            KeyboardHyper                = 143,
            KeyboardTurbo                = 144,
            KeyboardAbort                = 145,
            KeyboardResume               = 146,
            KeyboardSuspend              = 147,
            KeyboardAgain                = 148,
            KeyboardCopy                 = 149,
            KeyboardCut                  = 150,
            KeyboardFind                 = 151,
            KeyboardOpen                 = 152,
            KeyboardPaste                = 153,
            KeyboardProps                = 154,
            KeyboardSelect               = 155,
            KeyboardUndo                 = 156,
            KeyboardHiragana             = 157,
            KeyboardKatakana             = 158,
            KeyboardF1                   = 159,
            KeyboardF2                   = 160,
            KeyboardF3                   = 161,
            KeyboardF4                   = 162,
            KeyboardF5                   = 163,
            KeyboardF6                   = 164,
            KeyboardF7                   = 165,
            KeyboardF8                   = 166,
            KeyboardF9                   = 167,
            KeyboardF10                  = 168,
            KeyboardF11                  = 169,
            KeyboardF12                  = 170,
            KeyboardF13                  = 171,
            KeyboardF14                  = 172,
            KeyboardF15                  = 173,
            KeyboardF16                  = 174,
            KeyboardF17                  = 175,
            KeyboardF18                  = 176,
            KeyboardF19                  = 177,
            KeyboardF20                  = 178,
            KeyboardF21                  = 179,
            KeyboardF22                  = 180,
            KeyboardF23                  = 181,
            KeyboardF24                  = 182,
            KeyboardF25                  = 183,
            KeyboardF26                  = 184,
            KeyboardF27                  = 185,
            KeyboardF28                  = 186,
            KeyboardF29                  = 187,
            KeyboardF30                  = 188,
            KeyboardF31                  = 189,
            KeyboardF32                  = 190,
            KeyboardF33                  = 191,
            KeyboardF34                  = 192,
            KeyboardF35                  = 193,
            MouseLeft                    = 194,
            MouseMiddle                  = 195,
            MouseRight                   = 196,
            MouseForward                 = 197,
            MouseBack                    = 198,
            MouseX1                      = 199,
            MouseX2                      = 200,
            MouseDeltaX                  = 201,
            MouseDeltaY                  = 202,
            MouseScrollX                 = 203,
            MouseScrollY                 = 204,
            MouseScrollPixelX            = 205,
            MouseScrollPixelY            = 206,
            GamepadSouth                 = 207,
            GamepadEast                  = 208,
            GamepadNorth                 = 209,
            GamepadWest                  = 210,
            GamepadC                     = 211,
            GamepadZ                     = 212,
            GamepadLeftTrigger           = 213,
            GamepadLeftTrigger2          = 214,
            GamepadRightTrigger          = 215,
            GamepadRightTrigger2         = 216,
            GamepadSelect                = 217,
            GamepadStart                 = 218,
            GamepadMode                  = 219,
            GamepadLeftThumb             = 220,
            GamepadRightThumb            = 221,
            GamepadDPadUp                = 222,
            GamepadDPadDown              = 223,
            GamepadDPadLeft              = 224,
            GamepadDPadRight             = 225,
            GamepadLeftStickX            = 226,
            GamepadLeftStickY            = 227,
            GamepadLeftZ                 = 228,
            GamepadRightStickX           = 229,
            GamepadRightStickY           = 230,
            GamepadRightZ                = 231,
            TouchpadX                    = 232,
            TouchpadY                    = 233,
            TouchpadMagnifyDelta         = 234,
            TouchpadRotateDelta          = 235,
            SystemExit                   = 236,

            ToString                     = libphx.Button_ToString,
        }

        if onDef_Button then onDef_Button(Button, mt) end
        Button = setmetatable(Button, mt)
    end

    return Button
end

return Loader
